Python XML ファイル – 読み方、書き方、解析方法
XMLとは何ですか?
XML は eXtensible Markup Language の略です。 小規模から中量のデータを保存および転送するように設計されており、構造化情報の共有に広く使用されています。
Python XML文書を解析および変更することができます。XML文書を解析するには、XML文書全体をメモリに保持する必要があります。このチュートリアルでは、XML minidomクラスを Python XML ファイルを読み込んで解析します。
minidom を使用して XML を解析する方法
解析するサンプル XML ファイルを作成しました。
ステップ 1) サンプル XML ファイルを作成する
ファイル内には、名前、姓、自宅、専門分野(SQL、 Python、テストとビジネス)
ステップ 2) 解析関数を使用して XML ファイルをロードおよび解析します
ドキュメントを解析したら、 「ノード名」 ドキュメントのルートと「firstchild タグ名」。 タグ名とノード名は、XML ファイルの標準プロパティです。
- xml.dom.minidom モジュールをインポートし、解析する必要があるファイル (myxml.xml) を宣言します。
- このファイルには、姓、名、自宅、専門知識など、従業員に関する基本情報が含まれています。
- XML Minidom の parse 関数を使用して、XML ファイルをロードして解析します。
- 変数 doc があり、doc は解析関数の結果を取得します。
- ファイルからノード名と子のタグ名を出力したいので、print 関数で宣言します。
- コードを実行します。XML ファイルからノード名 (#document) と XML ファイルから最初の子タグ名 (employee) が出力されます。
注意:
ノード名と子のタグ名は、XML dom の標準名またはプロパティです。
ステップ 3) XML ドキュメントから XML タグのリストを呼び出し、出力します。
次に、XML文書からXMLタグのリストを呼び出して印刷することもできます。ここではSQLなどのスキルセットを印刷しました。 Python, テスト そしてビジネス。
- 変数の専門知識を宣言します。そこから従業員が持つすべての専門知識名を抽出します。
- 「getElementsByTagName」という dom 標準関数を使用します。
- これにより、スキルという名前のすべての要素が取得されます
- 各スキルタグに対するループを宣言します。
- コードを実行すると、XNUMX つのスキルのリストが表示されます
XMLノードの書き方
「createElement」関数を使用して新しい属性を作成し、この新しい属性またはタグを既存の XML タグに追加できます。 XML ファイルに新しいタグ「BigData」を追加しました。
- 新しい属性 (BigData) を既存の XML タグに追加するコードを作成する必要があります。
- 次に、既存の XML タグに新しい属性を追加した XML タグを出力する必要があります。
- 新しい XML を追加してドキュメントに追加するには、コード「doc.create elements」を使用します。
- このコードは、新しい属性「ビッグデータ」の新しいスキルタグを作成します。
- このスキル タグをドキュメントの最初の子 (従業員) に追加します。
- コードを実行すると、新しいタグ「ビッグデータ」が他の専門知識のリストとともに表示されます。
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") #Write 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")) # Write 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 ドキュメントを解析するには、ドキュメント全体をメモリ内に保持する必要があります。
- XMLドキュメントを解析するには
- xml.dom.minidomをインポートする
- 関数「parse」を使用してドキュメントを解析します ( doc=xml.dom.minidom.parse (ファイル名);
- コード (=doc.getElementsByTagName( "name of xml tags") を使用して、XML ドキュメントから XML タグのリストを呼び出します。
- XML ドキュメントに新しい属性を作成して追加するには
- 関数「createElement」を使用する