xpath에서 not contains ()를 사용하는 방법은 무엇입니까?
다음과 같이 구성된 XML이 있습니다.
<whatson>
<productions>
<production>
<category>Film</category>
</production>
<production>
<category>Business</category>
</production>
<production>
<category>Business training</category>
</production>
</productions>
</whatson>
그리고 "비즈니스"가 포함되지 않은 카테고리의 모든 프로덕션을 선택해야합니다 (이 예에서는 첫 번째 프로덕션 만 해당).
xpath로 가능합니까? 이 라인을 따라 작업을 시도했지만 아무데도 없었습니다.
//production[not(contains(category,'business'))]
XPath 쿼리는 대소 문자를 구분합니다. 귀하의 예를 살펴보면 (그런데, 아무도 더 이상 예를 제공하지 않는 것 같습니다!) "비즈니스"를 "비즈니스"로 변경하여 원하는 결과를 얻을 수 있습니다.
//production[not(contains(category,'Business'))]
Chrome에서 XML 파일을 열고 개발자 도구를 사용하여 해당 XPath 쿼리를 실행하여이를 테스트했으며 Film 범주 만 다시 제공했습니다.
"비즈니스"가 포함되지 않은 카테고리의 모든 작품을 선택해야합니다.
@Arran의 대답을 올바른 것으로 upvoted했지만 이것을 추가합니다 ... 엄격하게 해석하면 OP의 사양은 다음과 같이 구현됩니다.
//production[category[not(contains(., 'Business'))]]
보다는
//production[not(contains(category, 'Business'))]
후자는 첫 번째 category
하위에 "비즈니스"가 포함되지 않은 모든 프로덕션을 선택합니다 . 두 개의 XPath 표현식은 a production
에 category
자식이 없거나 둘 이상인 경우 다르게 작동합니다 .
짧은 예제 XML에서 <production>
와 같이 모든 사람 이 정확히 하나의 <category>
자식을 갖는 한 실제로는 아무런 차이가 없습니다 . 그것이 사실인지 항상 믿을 수 있는지 여부는 제약 조건을 적용하는 스키마가 있는지 여부와 같은 다양한 요인에 따라 다릅니다. 개인적으로 "비용이 많이 들지 않기"때문에 더 강력한 옵션을 선택하겠습니다. 질문에 명시된대로 귀하의 요구 사항이 실제로 정확하다고 가정합니다 (예 : '카테고리가없는 모든 프로덕션 선택 '비즈니스'포함 ').
not(expression)
기능 을 사용할 수 있습니다
not()
xpath의 함수입니다 (연산자가 아닌)
예:
//a[not(contains(@id, 'xx'))]
또는
expression != true()
// production [not (contains (category, 'business'))]이어야합니다.
참고 URL : https://stackoverflow.com/questions/11024080/how-to-use-not-contains-in-xpath
'programing' 카테고리의 다른 글
C 헤더 파일을 어떻게 만들 수 있습니까? (0) | 2020.11.30 |
---|---|
Generic Intellisense의 새롭고 완전한 구현 (0) | 2020.11.30 |
SSRS 디자인 모드에서 테이블 릭스 열을 쉽게 재 배열 할 수있는 방법이 있습니까? (0) | 2020.11.30 |
Java : String split () : 끝에 빈 문자열을 포함하고 싶습니다. (0) | 2020.11.30 |
null 일 수있는 값을 반환하는 간단한 방법이 있습니까? (0) | 2020.11.29 |