【发布时间】:2020-02-04 13:27:06
【问题描述】:
我有一个类似于
的xml<Employees>
<Employee>
<GenericData>
<Data>
<ID>1</ID>
<Name>ABC</Name>
</Data>
</GenericData>
<DepartmentData>
<SubDepartment>
<DeptID>12</DeptID>
<DeptName>IT</DeptName>
</SubDepartment>
</DepartmentData>
</Employee>
<Employee>
<GenericData>
<Data>
<ID>1</ID>
<Name>XYZ</Name>
</Data>
</GenericData>
<DepartmentData>
<SubDepartment>
<DeptID>13</DeptID>
<DeptName>HR</DeptName>
</SubDepartment>
</DepartmentData>
</Employee>
</Employees>
我的问题是根据名称获取 DeptID。我可以使用以下方法获取相同的内容:
//Data/Name[text()="ABC"]/ancestor::Employee/DepartmentData/SubDepartment/DeptName/text()
需要一个在祖先之后使用相对路径的解决方案,例如:
//Data/Name[text()=\"ABC\"]/ancestor::Employee/*/DeptName/text()
使用 * 删除 DepartmentData/SubDepartment,即使用相对路径。
注意:我的实际xml太复杂,写完整路径是不可行的。非常感谢任何帮助。
【问题讨论】:
标签: java xml xpath relative-path ancestor