이 XML이 주어지면 XPath는 prop
속성에 포함 된 모든 요소 Foo
(처음 세 개의 노드)를 반환합니다 .
<bla>
<a prop="Foo1"/>
<a prop="Foo2"/>
<a prop="3Foo"/>
<a prop="Bar"/>
</bla>
답변
//a[contains(@prop,'Foo')]
이 XML을 사용하여 결과를 다시 얻는 경우 작동합니다.
<bla>
<a prop="Foo1">a</a>
<a prop="Foo2">b</a>
<a prop="3Foo">c</a>
<a prop="Bar">a</a>
</bla>
편집 : 주목해야 할 또 다른 사항은 위의 XPath가 해당 특정 XML에 대한 정답을 반환하지만 “bla”요소의 “a”요소 만 얻으려면 다른 사용자도 언급했듯이
/bla/a[contains(@prop,'Foo')]
이것은 “blah”요소에 내포되어 있는지에 관계없이 전체 xml 문서에서 모든 “a”요소를 검색합니다.
//a[contains(@prop,'Foo')]
나는 철저하고 스택 오버 플로우 정신을 위해 이것을 추가했습니다. 🙂
답변
이 XPath는 노드 이름 또는 속성 이름에 관계없이 ‘Foo’를 포함하는 속성을 가진 모든 노드를 제공합니다.
//attribute::*[contains(., 'Foo')]/..
물론, 속성 자체의 내용에 더 관심이 있고 반드시 부모 노드 일 필요는 없다면 /.를 삭제하십시오.
//attribute::*[contains(., 'Foo')]
답변
descendant-or-self::*[contains(@prop,'Foo')]
또는:
/bla/a[contains(@prop,'Foo')]
또는:
/bla/a[position() <= 3]
해부 :
descendant-or-self::
축-아래의 모든 노드와 노드 자체를 검색합니다. //보다 이것을 말하는 것이 더 낫습니다. // 어디에서나 (루트 노드의 자손 또는 자손) 의미하는 구현이 있습니다. 다른 하나는 기본 축을 사용합니다.
* or /bla/a
태그-와일드 카드 일치 및 / bla / a는 절대 경로입니다.
[contains(@prop,'Foo')] or [position() <= 3]
[] 내의 조건입니다. attribute는 다른 검색 축이므로 @prop는 attribute :: prop의 약자입니다. 또는 position () 함수를 사용하여 처음 3 개를 선택할 수 있습니다.
답변
John C가 가장 비슷하지만 XPath는 대소 문자를 구분하므로 올바른 XPath는 다음과 같습니다.
/bla/a[contains(@prop, 'Foo')]
답변
다음과 같은 것을 시도해 보셨습니까?
// a [포함 (@prop, “Foo”)]
전에는 contains 함수를 사용한 적이 없지만 광고 된대로 작동해야한다고 생각합니다 …
답변
링크 자체의 내용과도 일치해야하는 경우 text ()를 사용하십시오.
//a[contains(@href,"/some_link")][text()="Click here"]
답변
/ bla / a [포함 (@prop, “foo”)]