Python (minidom) を使用して、次のような階層構造を出力する XML ファイルを解析しています (ここでは、重要な階層関係を示すためにインデントを使用しています)。
My Document
Overview
Basic Features
About This Software
Platforms Supported
代わりに、プログラムはノードに対して複数回反復し、次の出力重複ノードを生成します。(各反復でノード リストを見ると、なぜこれを行うのかは明らかですが、探しているノード リストを取得する方法が見つからないようです。)
My Document
Overview
Basic Features
About This Software
Platforms Supported
Basic Features
About This Software
Platforms Supported
Platforms Supported
XML ソース ファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<DOCMAP>
<Topic Target="ALL">
<Title>My Document</Title>
</Topic>
<Topic Target="ALL">
<Title>Overview</Title>
<Topic Target="ALL">
<Title>Basic Features</Title>
</Topic>
<Topic Target="ALL">
<Title>About This Software</Title>
<Topic Target="ALL">
<Title>Platforms Supported</Title>
</Topic>
</Topic>
</Topic>
</DOCMAP>
Python プログラムは次のとおりです。
import xml.dom.minidom
from xml.dom.minidom import Node
dom = xml.dom.minidom.parse("test.xml")
Topic=dom.getElementsByTagName('Topic')
i = 0
for node in Topic:
alist=node.getElementsByTagName('Title')
for a in alist:
Title= a.firstChild.data
print Title
下位レベルのトピック名を「SubTopic1」や「SubTopic2」などに変更することで、「Topic」要素をネストしないことで問題を解決できました。しかし、さまざまな要素名を必要とせずに、組み込みの XML 階層構造を利用したいと考えています。「トピック」要素をネストできるはずであり、現在どのレベルの「トピック」を見ているのかを知る方法があるはずです。
私は多くの異なる XPath 関数を試しましたが、あまり成功しませんでした。