工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python XML パーサー チュートリアル:xml ファイルの例を読む (Minidom、ElementTree)

XML とは?

XML は eXtensible Markup Language の略です。少量から中量のデータを保存および転送するように設計されており、構造化された情報を共有するために広く使用されています。

Python を使用すると、XML ドキュメントを解析および変更できます。 XML ドキュメントを解析するには、XML ドキュメント全体をメモリに格納する必要があります。このチュートリアルでは、Python で XML minidom クラスを使用して XML ファイルを読み込んで解析する方法を説明します。

このチュートリアルでは、次のことを学びます-

minidom を使用して XML を解析する方法

解析するサンプル XML ファイルを作成しました。

ステップ 1) ファイル内には、名、姓、自宅、専門分野 (SQL、Python、テスト、ビジネス) が表示されます


ステップ 2) ドキュメントを解析したら、「ノード名」を出力します ドキュメントのルートと「firstchild タグ名」 .タグ名とノード名は、XML ファイルの標準プロパティです。

注意 :

ノード名と子タグ名は、XML dom の標準的な名前またはプロパティです。これらのタイプの命名規則に慣れていない場合に備えて。

ステップ 3) XML ドキュメントから XML タグのリストを呼び出して出力することもできます。ここでは、SQL、Python、テスト、ビジネスなどの一連のスキルを出力しました。

XML ノードの作成方法

「createElement」関数を使用して新しい属性を作成し、この新しい属性またはタグを既存の XML タグに追加できます。 XML ファイルに新しいタグ「BigData」を追加しました。

<オール>
  • 新しい属性 (BigData) を既存の XML タグに追加するコードを作成する必要があります
  • 次に、既存の XML タグに新しい属性を追加して XML タグを出力する必要があります
  • XML パーサーの例

    Python 2 の例

    import xml.dom.minidom
    
    def main():
    # use the parse() function to load and parse an XML file
       doc = xml.dom.minidom.parse("Myxml.xml");
      
    # print out the document node and the name of the first child tag
       print doc.nodeName
       print doc.firstChild.tagName
      
    # get a list of XML tags from the document and print each one
       expertise = doc.getElementsByTagName("expertise")
       print "%d expertise:" % expertise.length
       for skill in expertise:
         print skill.getAttribute("name")
        
    # create a new XML tag and add it into the document
       newexpertise = doc.createElement("expertise")
       newexpertise.setAttribute("name", "BigData")
       doc.firstChild.appendChild(newexpertise)
       print " "
    
       expertise = doc.getElementsByTagName("expertise")
       print "%d expertise:" % expertise.length
       for skill in expertise:
         print skill.getAttribute("name")
        
    if name == "__main__":
      main();

    Python 3 の例

    import xml.dom.minidom
    
    def main():
        # use the parse() function to load and parse an XML file
        doc = xml.dom.minidom.parse("Myxml.xml");
    
        # print out the document node and the name of the first child tag
        print (doc.nodeName)
        print (doc.firstChild.tagName)
        # get a list of XML tags from the document and print each one
        expertise = doc.getElementsByTagName("expertise")
        print ("%d expertise:" % expertise.length)
        for skill in expertise:
            print (skill.getAttribute("name"))
    
        # create a new XML tag and add it into the document
        newexpertise = doc.createElement("expertise")
        newexpertise.setAttribute("name", "BigData")
        doc.firstChild.appendChild(newexpertise)
        print (" ")
    
        expertise = doc.getElementsByTagName("expertise")
        print ("%d expertise:" % expertise.length)
        for skill in expertise:
            print (skill.getAttribute("name"))
    
    if __name__ == "__main__":
        main();

    ElementTree を使用して XML を解析する方法

    ElementTree は、XML を操作するための API です。 ElementTree は XML ファイルを処理する簡単な方法です。

    次の XML ドキュメントをサンプル データとして使用しています:

    <data>
       <items>
          <item name="expertise1">SQL</item>
          <item name="expertise2">Python</item>
       </items>
    </data>
    

    ElementTree を使用した XML の読み取り:

    最初に xml.etree.ElementTree モジュールをインポートする必要があります。

    import xml.etree.ElementTree as ET
    

    それでは、ルート要素を取得しましょう:

    root = tree.getroot()
    


    上記の xml データを読み取るための完全なコードは次のとおりです

    import xml.etree.ElementTree as ET
    tree = ET.parse('items.xml')
    root = tree.getroot()
    
    # all items data
    print('Expertise Data:')
    
    for elem in root:
       for subelem in elem:
          print(subelem.text)
    

    出力:

    Expertise Data:
    SQL
    Python
    

    まとめ:

    Python を使用すると、一度に 1 行ずつではなく、XML ドキュメント全体を一度に解析できます。 XML ドキュメントを解析するには、ドキュメント全体をメモリに保持する必要があります。


    Python

    1. Python ファイル I/O
    2. Java BufferedReader:例を使用して Java でファイルを読み取る方法
    3. 例を使用した Python 文字列 strip() 関数
    4. Python 文字列の長さ | len() メソッドの例
    5. Yield in Python チュートリアル:Generator &Yield vs Return の例
    6. 例を使用したコレクション内の Python カウンター
    7. Python の Enumerate() 関数:ループ、タプル、文字列 (例)
    8. Python ファイルが存在するかどうかを確認します。 Python でディレクトリが存在するかどうかを確認する方法
    9. Python JSON:JSON ファイルのエンコード (ダンプ)、デコード (ロード)、読み取り
    10. Python List index() と例
    11. Python - ファイル I/O