source

특성 값으로 요소를 선택하려면 XPath

manycodes 2023. 9. 18. 22:33
반응형

특성 값으로 요소를 선택하려면 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']

한 가지 더 주목해야 할 사항://일치하는 노드를 찾기 위해 전체 문서를 검색하기 때문에 매우 느릴 수 있습니다.작업 중인 문서의 구조가 일치하려면 다음과 같은 보다 명확한 경로를 사용하는 것이 가장 좋습니다.

/Employees/Employee[@id = '4']

다음과 같이 "특정 속성을 가진 모든 노드"를 선택할 수 있습니다.

//*[@id='4']

이 작업을 시도해 보십시오.

/Employees/Employee[@id=4]/*/text()

언급URL : https://stackoverflow.com/questions/14248063/xpath-to-select-element-by-attribute-value

반응형