У меня 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 слишком сложен, и написание целого пути невозможно. Любая помощь высоко ценится.