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>
id = “4”인 Employee 요소를 선택하고 싶습니다.
아무것도 반환하지 않는 XPath 식 아래를 사용하고 있습니다.
//Employee/[@id='4']/text()
http://chris.photobooks.com/xml/default.htm 에서 확인했으며 문제가 어디에 있는지 확실하지 않은 잘못된 xpath가 표시됩니다.
답변
를 제거 /
해야합니다 [
. 술어 (의 부분 [
]
)는 바로 앞에 슬래시가 없어야합니다. 또한 Employee 요소 자체를 선택하려면 /text()
마지막 부분을 그대로 두거나 그렇지 않으면 Employee 요소 바로 아래에 공백 텍스트 값을 선택해야합니다.
//Employee[@id='4']
편집 : Jens가 주석에서 지적한 것처럼 //
전체 문서에서 일치하는 노드를 검색하기 때문에 속도가 매우 느릴 수 있습니다. 작업중인 문서의 구조가 일관된 경우 전체 경로를 사용하는 것이 가장 좋습니다. 예를 들면 다음과 같습니다.
/Employees/Employee[@id='4']
답변
다음으로 “특정 속성을 가진 모든 노드”를 다음과 같이 선택할 수 있습니다.
//*[@id='4']
답변
이것을 시도하십시오 :
/Employees/Employee[@id=4]/*/text()