무엇이 올바른 XPath 선택에 대한 특성을 포함하는"foo"?

StackOverflow https://stackoverflow.com/questions/103325

  •  01-07-2019
  •  | 
  •  

문제

주어진 이 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,을 보장하고 싶으면 당신은 단지 당신의"a"요소 요소는"즐",당신은 또한 사용

/bla/a[contains(@prop,'Foo')]

이 검색 것입니다 당신은 모두"a"요소의 전체 xml 문서에 관계없이,되고 중첩에서"ㅋ"소

//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::

Axis-검색를 통해 모든 노드를 아래와 노드 자체.그것은 종종 더 나은 이것을 말하다//.가 발생하는 몇 가지 구현//미나(decendant 또는 자기의 루트 노드).다른 사용하여 기본다.

* or /bla/a

태그-와일드카드 경기/bla/a 은 절대적인 경로입니다.

[contains(@prop,'Foo')] or [position() <= 3]

조건에[].@소품이 속한 속성:버팀대,특성으로 또 다른 검색 axis.또는 당신이 선택할 수 있습니다 먼저 3 사용하여 위치()함수입니다.

John C 은 가장 가까운,그러나 XPath 민감한 경우에,그래서 올바른 XPath 이 될 것이다:

/bla/a[contains(@prop, 'Foo')]

당신은 시도 다음과 같습니다.

//a[포함(@prop,"Foo")]

나는 결코 사용되는 포함 기능에 의심해야 하는 광고를 작동...

또한 필요한 경우에 맞게 컨텐츠의 링크 자체,사용(텍스트):

//a[contains(@href,"/some_link")][text()="Click here"]

/bla/a[포함(@prop,"foo")]

위의 코드는...//*[포함(@소품,'foo')]

이것을 보십시오:

//a[포함(@소품,'foo')]

해야 하는 작업에 대한 모든"a"태그에서 문서

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top