XPath를 통해 속성 노드 값 추출
XPath를 통해 속성 노드의 값을 추출하려면 어떻게 해야 합니까?
샘플 XML 파일은 다음과 같습니다.
<parents name='Parents'>
<Parent id='1' name='Parent_1'>
<Children name='Children'>
<child name='Child_2' id='2'>child2_Parent_1</child>
<child name='Child_4' id='4'>child4_Parent_1</child>
<child name='Child_1' id='3'>child1_Parent_1</child>
<child name='Child_3' id='1'>child3_Parent_1</child>
</Children>
</Parent>
<Parent id='2' name='Parent_2'>
<Children name='Children'>
<child name='Child_1' id='8'>child1_parent2</child>
<child name='Child_2' id='7'>child2_parent2</child>
<child name='Child_4' id='6'>child4_parent2</child>
<child name='Child_3' id='5'>child3_parent2</child>
</Children>
</Parent>
</parents>
지금까지 XPath 문자열을 사용했습니다.
//Parent[@id='1']/Children/child[@name]
반품만 가능합니다.child
요소들, 하지만 나는 그것의 가치를 갖고 싶습니다.name
기여하다.
샘플 XML 파일의 경우 출력은 다음과 같습니다.
Child_2
Child_4
Child_1
Child_3
//Parent[@id='1']/Children/child/@name
당신의 원본child[@name]
원소를 뜻함child
속성이 있는.name
.너는 원한다child/@name
.
특성 이름 없이 값만 가져오려면string()
:
string(//Parent[@id='1']/Children/child/@name)
fn:string() 함수는 인수의 값을 다음과 같이 반환합니다.xs:string
. 인수가 속성인 경우 속성의 값을 다음과 같이 반환합니다.xs:string
.
위에서 답변한 바와 같이:
//Parent[@id='1']/Children/child/@name
출력만 할 것입니다.name
4의 속성child
에 속한 노드Parent
그 술어에 의하여 명기된.[@id=1]
. 그러면 술어를 다음으로 변경해야 합니다.[@id=2]
한 세트를 얻다child
다음 노드Parent
.
하지만 당신이 무시한다면,Parent
노드를 모두 연결하고 다음을 사용:
//child/@name
선택가능합니다name
모두의 속성child
노드를 한 번에 연결합니다.
name="Child_2"
name="Child_4"
name="Child_1"
name="Child_3"
name="Child_1"
name="Child_2"
name="Child_4"
name="Child_3"
당신은 사용해야 합니다.//Parent[@id='1']/Children/child/data(@name)
속성을 직렬화할 수 없으므로 xml looking 결과로 반환할 수 없습니다.data() 함수를 사용하여 속성에서 데이터를 가져오는 것이 필요합니다.
//Parent/Children[@ Attribute='value']/@Attribute
이것은 요소가 2개의 속성을 가지고 있는 경우에 사용할 수 있으며, 우리는 다른 속성의 도움으로 하나의 속성을 얻을 수 있습니다.
네임스페이스가 있는 모든 xml에 local-name 사용
//*[local-name()='Parent'][@id='1']/*[local-name()='Children']/*[local-name()='child']/@name
@ryenus, 결과를 반복해서 살펴봐야 합니다.이렇게 vbscript로 합니다.
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.setProperty "SelectionLanguage", "XPath"
xmlDoc.load("kids.xml")
'Remove the id=1 attribute on Parent to return all child names for all Parent nodes
For Each c In xmlDoc.selectNodes ("//Parent[@id='1']/Children/child/@name")
Wscript.Echo c.text
Next
XPath를 이용하여 속성과 텍스트의 값을 추출하는 표준 공식은 다음과 같습니다.
웹 요소의 속성 값을 추출하려면-
요소XPath/@attributeName
웹 요소의 텍스트 값을 추출하려면-
요소XPath/text()
당신의 경우 여기 xpath가 돌아옵니다.
//parent[@name='Parent_1']//child/@name
다음을 반환합니다.
Child_2
Child_4
Child_1
Child_3
언급URL : https://stackoverflow.com/questions/4835891/extract-value-of-attribute-node-via-xpath
'programing' 카테고리의 다른 글
저장 프로시저 두 번 이상 MySQL 업데이트 (0) | 2023.09.25 |
---|---|
부트스트랩 열에 콘텐츠를 중심에 맞추는 방법은? (0) | 2023.09.25 |
MySQL(MariaDB)에서 SQL(Azure)로 마이그레이션 (0) | 2023.09.25 |
워드프레스 플러그인 기능을 자체 플러그인으로 대체 (0) | 2023.09.25 |
안드로이드.fragment getActivity()가 null을 반환하는 경우가 있습니다. (0) | 2023.09.25 |