[xml] 속성 값으로 요소를 선택하는 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>

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()


답변