考虑这段 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() 的输出。
当然,我可以将某些东西破解到另一个 xpath 查询中并弄清楚,但我怀疑应该有一种非常直接的方法来使用libxml2
,这就是我正在寻找的。