我的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']]
(我故意在名字之前使用//,因为名字不一定是员工的直接子女)
我不知道如何将其写入文件,并且出于某种原因 - 我的查询不会返回任何内容。
答案 0 :(得分:2)
根据发布的XML,您应该能够使用以下XPath表达式:
//Employee[name/@lang='en']
XPath返回Employee
元素,其中相应的子name
具有属性lang
等于"en"
。或者,如果name
可能不是Employee
的直接子项,则可以改为使用以下表达式:
//Employee[.//name/@lang='en']
请注意.
之前的//
,表示谓词([]
)中的表达式与当前Employee
上下文相关。