我的 XML 从概念上讲是这样的结构:
<?xml version="1.0" encoding="UTF-8"?>
<Employees>
<Employee>
<age>40</age>
<name lang="en">Tom</name>
<gender>Male</gender>
<role>Manager</role>
</Employee>
<Employee>
<age>25</age>
<name lang="fr">Meghna</name>
<gender>Female</gender>
<role>Manager</role>
</Employee>
</Employees>
现在,我想要的是选择所有名称为 lang="en"的员工,并将它们写入一个新的 XML 文件。
所以在这个例子中我只想要第一个员工:
<Employee>
<age>40</age>
<name lang="en">Tom</name>
<gender>Male</gender>
<role>Manager</role>
</Employee>
我尝试做类似的事情
//Employee[//name[@lang='en']]
(我故意在 name 之前使用//,因为 name 不必是 Employee 的直接子代)
我不知道如何将其写入文件,并且由于某种原因 - 我的查询没有返回任何内容。
最佳答案
根据发布的 XML,您应该能够使用以下 XPath 表达式:
//Employee[name/@lang='en']
XPath 返回 Employee
元素,其中相应的子 name
属性 lang
等于 "en"
。或者,如果 name
可能不是 Employee
的直接子代,您可以使用以下表达式:
//Employee[.//name/@lang='en']
请注意 //
之前的 .
,它表示谓词 ([]
) 内的表达式是相对于当前 Employee 的
上下文。
关于python - 在Python中使用Xpath按属性选择祖先节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34653427/