XPath: 자식 노드에서 부모 노드 가져오기
자식 노드에 대한 부모 노드를 가져와야 합니다.title 50
지금은 내가 사용하는 것만
//*[title="50"]
어떻게 하면 부모를 얻을 수 있을까요?결과는 다음과 같습니다.store
마디마디
<?xml version="1.0" encoding="utf-8"?>
<d:data xmlns:d="defiant-namespace" d:mi="23">
<store d:mi="22">
<book price="12.99" d:price="Number" d:mi="4">
<title d:constr="String" d:mi="1">Sword of Honour</title>
<category d:constr="String" d:mi="2">fiction</category>
<author d:constr="String" d:mi="3">Evelyn Waugh</author>
</book>
<book price="8.99" d:price="Number" d:mi="9">
<title d:constr="String" d:mi="5">Moby Dick</title>
<category d:constr="String" d:mi="6">fiction</category>
<author d:constr="String" d:mi="7">Herman Melville</author>
<isbn d:constr="String" d:mi="8">0-553-21311-3</isbn>
</book>
<book price="8.95" d:price="Number" d:mi="13">
<title d:constr="String" d:mi="10">50</title>
<category d:constr="String" d:mi="11">reference</category>
<author d:constr="String" d:mi="12">Nigel Rees</author>
</book>
<book price="22.99" d:price="Number" d:mi="18">
<title d:constr="String" d:mi="14">The Lord of the Rings</title>
<category d:constr="String" d:mi="15">fiction</category>
<author d:constr="String" d:mi="16">J. R. R. Tolkien</author>
<isbn d:constr="String" d:mi="17">0-395-19395-8</isbn>
</book>
<bicycle price="19.95" d:price="Number" d:mi="21">
<brand d:constr="String" d:mi="19">Cannondale</brand>
<color d:constr="String" d:mi="20">red</color>
</bicycle>
</store>
</d:data>
상위 노드의 이름과 함께 축을 사용합니다.
//*[title="50"]/parent::store
이 XPath는 상위 노드가 다음과 같은 경우에만 선택합니다.store
.
하지만 이것들 중 하나를 사용할 수도 있습니다.
//*[title="50"]/parent::*
//*[title="50"]/..
이 xpath는 부모 노드를 선택합니다.따라서 문서가 변경되면 원하는 노드가 아니더라도 항상 노드를 선택하게 됩니다.
편집
부모가 자전거이고 부모가 상점인 경우 해당 예에서 어떤 일이 발생합니까?
올라가나요?
아니요, 일치하는 노드의 상위인 경우에만 스토어를 선택합니다.//*[title="50"]
.
만약 그렇지 않다면, 그러한 경우에 오르고 그러한 부모가 없다면 None을 반환할 방법이 있습니까?
예, 사용 가능합니다.ancestor
축들
//*[title="50"]/ancestor::store
노드 일치의 모든 조상을 선택합니다.//*[title="50"]
그것은 '가게'입니다.예.
<data xmlns:d="defiant-namespace" d:mi="23">
<store mi="1">
<store mi="22">
<book price="8.95" d:price="Number" d:mi="13">
<title d:constr="String" d:mi="10">50</title>
<category d:constr="String" d:mi="11">reference</category>
<author d:constr="String" d:mi="12">Nigel Rees</author>
</book>
</store>
</store>
</data>
다른 방법으로 사용할 수 있습니다.ancestor
.
//*[title="50"]/ancestor::store
그것은 보다 더 강력합니다.parent
왜냐하면 그것은 심지어 조부모나 위대한 조부모까지도 얻을 수 있기 때문입니다.
오래되고 자주 묻는 질문에 대한 새롭고 개선된 답변...
어떻게 하면 부모를 얻을 수 있을까요?결과는 다음과 같습니다.
store
마디마디
다음보다 술어를 사용합니다.parent::
아니면ancestor::
축.
여기서 대부분의 답변은 다음을 선택합니다.title
그런 다음 대상 상위 또는 상위까지 이동합니다(store
) 요소.더 단순하고 직접적인 접근법은 처음부터 상위 또는 상위 요소를 직접 선택하여 이동할 필요를 없애는 것입니다.parent::
아니면ancestor::
축:
//*[book/title = "50"]
개입 요소의 이름이 다를 경우:
//*[*/title = "50"]
또는 이름과 깊이에서:
//*[.//title = "50"]
표현의 끝에 있는 두 점도 사용할 수 있습니다.다음 예를 참조하십시오.
//*[title="50"]/..
//store[book[title[text()="50"]]]
아니면
//store[*[title[text()="50"]]]
언급URL : https://stackoverflow.com/questions/28237694/xpath-get-parent-node-from-child-node
'programing' 카테고리의 다른 글
스크립트를 사용하여 이미지 캐시하기 (0) | 2023.10.20 |
---|---|
PANDS의 SQL-like window 함수: Python Pandas Dataframe의 Row Numbering (0) | 2023.10.20 |
pt로 할까요, px로 할까요? (0) | 2023.10.20 |
팝업에서 우커머스 체크아웃 (0) | 2023.10.20 |
(Maria SQL + Node.js)에서 쿼리 문자열의 로그를 보는 방법은 무엇입니까? (0) | 2023.10.15 |