次の xml を検討してください。
...
<DataType>
<name>AccountStatus</name>
<description>This field indicates the account status</description>
<ValidValue>
<value>A</value>
<description>Account is Active</description>
<name>ACTIVE</name>
</ValidValue>
<ValidValue>
<value>I</value>
<description>Account is Inactive</description>
<name>INACTIVE</name>
</ValidValue>
</DataType>
<DataType>
<name>
...
特定のノードがリーフ ノードかどうかを知りたいです。たとえば、「名前」、「説明」、および「値」は葉ノードです。「ValidValue」は、サブ要素が含まれているためではありません。
これは私が試したものです:
import libxml2
doc = libxml2.parseFile("data_types.xml")
xml_query = doc.xpathNewContext()
node_list = xml_query.xpathEval('/path/to/DataType')
for node in node_list:
print '%s' % k.get_children()
print '%s' % k.isText()
どういうわけか get_children() と isText() の動作がおかしくなりました。isText() は「名前」ノード (?) に対して 0 を返しますが、get_children() の出力をどうするかはよくわかりませんでした。
libxml2
確かに、別の xpath クエリに何かをハッキングしてそれを理解することはできますが、私が探しているものを使用してこれを行うための非常に簡単な方法があるはずです。