XPath для выбора элемента по значению атрибута
у меня есть следующий XML-код.
<?xml version="1.0" encoding="UTF-8"?>
<Employees>
<Employee id="3">
<age>40</age>
<name>Tom</name>
<gender>Male</gender>
<role>Manager</role>
</Employee>
<Employee id="4">
<age>25</age>
<name>Meghna</name>
<gender>Female</gender>
<role>Manager</role>
</Employee>
</Employees>
Я хочу выбрать элемент Employee с id= "4".
Я использую ниже выражение XPath, которое ничего не возвращает.
//Employee/[@id='4']/text()
Я проверил его в http://chris.photobooks.com/xml/default.htm и он говорит недопустимый xpath, не уверен, где проблема.
2 ответов
вам нужно удалить /
до [
. Предикаты (части в [
]
) не должны иметь косые черты непосредственно перед ними. Кроме того, чтобы выбрать сам элемент Employee, вы должны оставить /text()
в конце или иначе вы просто выбираете текстовые значения пробелов непосредственно под элементом Employee.
//Employee[@id='4']
Edit: как указывает Йенс в комментариях,//
может быть очень медленным, потому что он ищет всю документ для сопоставления узлов. Если структура документов, с которыми вы работаете, будет согласованной, вам, вероятно, лучше всего использовать полный путь, например:
/Employees/Employee[@id='4']