私はminidomを使用してデバッグキーリストのリストを含むXMLを検査しています。 XMLの例は以下の通りである。Pythonでは、XMLの特定のセクションを調べてノードテキストを抽出するにはどうすればよいですか?
<Shortcuts>
<Item>
<CommandName>DebugCommandName_1</CommandName>
<ShortcutKeys>
<Item>
<Keys>
<Item>KEY_1</Item>
<Item>KEY_2</Item>
</Keys>
</Item>
</ShortcutKeys>
</Item>
...
<Item>
<CommandName>DebugCommandName_2</CommandName>
<ShortcutKeys>
<Item>
<Keys>
<Item>KEY_3</Item>
</Keys>
</Item>
<Item>
<Keys>
<Item>KEY_4</Item>
</Keys>
</Item>
</ShortcutKeys>
</Item>
</Shortcuts>
を私のコントロールを超えた理由から、私が入ってくるXMLの形式を要求することはできませんがより一貫性を持つように変更されているので、私は両方のレイアウトを考慮しなければなりません文書のShortcutKeysセクション、および複数のItem子要素をその場全体に表示することができます。 minidomとXMLを解析
、私はその後、コンテンツを抽出するために、次のPythonを使用します。
for item in parsedKeyComboFile.getElementsByTagName("Item"):
if (item.getElementsByTagName("CommandName").length > 0):
commandName = item.getElementsByTagName("CommandName")[0].childNodes[0].nodeValue
print(commandName)
elif (item.getElementsByTagName("Keys").length > 0):
keyCombo = item.getElementsByTagName("Item")[0].childNodes[0].nodeValue
print(keyCombo)
私は最終的に辞書にこの情報を追加することが、私が得る上でXMLのうち、今印刷用されます次のとおりです。
DebugCommandName_1
KEY_1
DebugCommandName_2
KEY_3
KEY_4
私が望むことはあるとき:
DebugCommandName_1
KEY_1 KEY_2
DebugCommandName_2
KEY_3 KEY_4
(私は私はありません実現単一行出力を達成するためにキーの印刷を適切にフォーマットする。ここで重要なのはKEY_2項目をスキップしていないことです)。
私はkeyCombo =行の[0]がキーのItemの最初の出現を制限していることを知っています。
トップレベルのItemとそのすべての子要素を検査し、その最上位のItem内の単一のCommandNameとすべてのキーアイテムを引き出し、次にその次のトップに移動する方法がありますかレベルアイテムとプロセスを繰り返す?私は今までこれを達成できていませんでした。
ElementTreeを使用する必要がありますか?
多くのありがとうございます。私は、私は答えとしてこれを中に置くために私を許してくださいしきい値を下回っていますと、コメントすることができません
優秀な、と私は明らかにminidomドキュメントに見逃していたものを指摘ありがとうございました! –