"foo"를 포함하는 속성을 선택하기 위한 올바른 XPath는 무엇입니까?
이 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]
[ ] 내의 조건입니다. @prop는 attribute::prop의 약자이며, attribute는 다른 검색 축입니다.또는 position() 함수를 사용하여 처음 3개를 선택할 수도 있습니다.
다음과 같은 것을 시도해 본 적이 있습니까?
//a[contains(@prop, "Foo")]
나는 contains 기능을 사용해 본 적이 없지만 그것이 광고대로 작동할 것이라고 의심합니다.
John C가 가장 가깝지만 XPath는 대소문자를 구분하므로 정확한 XPath는 다음과 같습니다.
/bla/a[contains(@prop, 'Foo')]
링크 자체의 내용도 일치시켜야 하는 경우 text()를 사용합니다.
//a[contains(@href,"/some_link")][text()="Click here"]
/bla/a[foo(@prop, "foo")]
시도해 보십시오.
//a[foo(@prop, 'foo')]
문서의 "a" 태그에 대해 작동해야 합니다.
위의 코드는...//*[foo(@prop, 'foo')]
다음과 같이 사용할 수도 있습니다.
a[@class='specific-class-name' and contains(@href,'/link/to/something')]
이것은 특정 단어를 포함하는 속성 href를 가진 태그 a가 속성 이름 앞에 @를 사용하는 것을 잊지 않는 것을 의미합니다.
언급URL : https://stackoverflow.com/questions/103325/what-is-the-correct-xpath-for-choosing-attributes-that-contain-foo
'programing' 카테고리의 다른 글
함수 반환 자체 (0) | 2023.09.10 |
---|---|
ajax 후 부트스트랩의 툴팁이 작동하지 않습니다. (0) | 2023.09.10 |
Android에서 메뉴 항목의 텍스트 색상을 변경하는 방법은 무엇입니까? (0) | 2023.09.10 |
MySQL 테이블에 읽기/쓰기를 잠그면 다른 프로그램이 데이터베이스에 읽기/쓰기하지 않고도 선택하고 삽입할 수 있습니다. (0) | 2023.09.10 |
PowerShell 스크립트의 파일 시스템 위치를 얻으려면 어떻게 해야 합니까? (0) | 2023.09.10 |