먼저 xPath란 무엇입니까? xPath는 XML에서 정보를 찾는 언어입니다.
xPath에는 요소, 속성, 텍스트, 네임스페이스, 처리 지침, 주석 및 문서 루트 노드 등 7가지 유형의 노드가 포함되어 있습니다. XML 문서는 문서 트리의 구조에 따라 구문 분석됩니다. 문서 트리의 루트를 문서 노드 또는 루트 노드라고 합니다.
기본 xml 문서의 소스코드입니다. 이 xml 소스코드를 보면 bookstore가 문서 노드(루트 노드)이고 book, title, 저자, 연도, 가격이 요소임을 알 수 있습니다. 노드. book 노드에는 제목, 저자, 연도, 가격이라는 4개의 하위 요소 노드가 있고, 제목 노드에는 저자, 연도, 가격이라는 3개의 형제 요소가 있습니다. title 요소 노드에는 속성과 텍스트 노드가 있습니다. 속성 노드는 lang이고 해당 값은 en입니다. 텍스트 노드의 값은 HarryPotter입니다.
아래에는 XML 노드 관계에 대한 몇 가지 설명이 있습니다(데이터 구조의 트리와 유사).
Parent: book 노드의 부모는 bookstore이고 book 노드는 제목, 저자, 연도 및 가격의 부모입니다. 노드. (각 노드에는 하나의 상위 노드만 있을 수 있습니다.)
자식: book은 서점의 자식이고, book node의 자식은 제목, 저자, 연도, 가격의 자식입니다.
(요소 노드는 0개, 하나 이상의 하위 항목을 가질 수 있습니다).
제목의 형제 요소에는 작성자, 연도 및 가격이 포함됩니다. 이러한 요소는 트리 구조의 형제 노드와 유사하게 동일한 상위 노드를 갖습니다. (노드는 0개, 1개 이상의 형제를 가질 수 있습니다).
조상자: 노드의 부모, 부모의 부모, 부모의 부모(무한 루프), 제목 요소 노드의 조상은 책과 서점입니다.
자손: 노드의 자식, 자식의 자식, 자식의 자식(무한 루프), 서점 문서 노드의 자식은 책, 제목, 저자, 연도, 가격, 랭입니다.
xml의 노드 관계를 아는 것만으로는 충분하지 않으며, xPath는 경로 표현식을 사용하여 문서에서 노드 또는 노드 세트를 선택합니다. 노드는 경로나 단계를 따라 선택됩니다.
XPath는 경로 표현식을 사용하여 XML 문서에서 노드를 선택합니다. 노드는 경로나 단계를 따라 선택됩니다. 가장 유용한 경로 표현식은 다음과 같습니다.
nodename: 이 노드의 모든 노드를 선택합니다.
/: 루트 노드에서 선택합니다.
//: 해당 항목에 관계없이 선택 항목과 일치하는 현재 노드에서 문서의 노드를 선택합니다. position
.: 현재 노드 선택
..: 현재 노드의 상위 노드 선택
@: 속성 선택
js를 통해 xpath 쿼리 구문을 사용하여 직접 쿼리해 보겠습니다
먼저 xpath 호출에 대한 기사를 작성하세요 html ( 호출 코드는 js) 파일 템플릿에 작성된 다음 쿼리용 xml 파일을 준비합니다.
js 템플릿의 소스코드는 다음과 같습니다.
https://www.runoob.com/try/try.php?filename=try_xpath_select_cdnodes
이 HTML 파일의 js 코드를 하나씩 살펴보세요. js 코드만 있습니다)
js의 비동기 호출 함수입니다. 중요한 코드는 15번과 17번 줄에 있습니다. 15번 줄의 함수가 전달한 dname 함수는 xml의 경로이고, 17은 얻은 xml 파일을 반환합니다.
20행을 참고하세요. xml 변수는 loadXMLDOC 함수를 실행한 후 얻은 XML 파일을 가져옵니다. 21번째 줄의 경로 변수는 xpath의 쿼리 구문입니다. 첫 번째 if 문은 IE6 이하의 브라우저인지 여부를 판단하며, IE6 이하의 브라우저라면 해당 쿼리의 노드 배열을 얻은 후 배열에 있는 값을 순회하여 해당 페이지에 출력합니다.
IE6 이하 브라우저의 경우 두 번째 if문의 실행 과정은 동일하지만, IE6 이하 브라우저는 평가 함수를 통해 쿼리하는 구문이 약간 다르며 기본적으로 형식은 다릅니다. 방금 말한 내용을 연습하세요. 몇 가지 문법을 연습하세요.
쿼리 구문을 바꾸려면 경로 값만 수정하면 됩니다.
먼저 쿼리해야 하는 구문을 나열하세요.
참고: 경로가 슬래시(/)로 시작하는 경우 이 경로는 항상 요소에 대한 절대 경로를 나타냅니다!
bookstore: bookstore 요소의 모든 하위 노드를 선택합니다.
/bookstore: 루트 요소 bookstore를 선택합니다.
서점/책: 서점의 하위 요소인 책 요소를 모두 선택합니다.
//book: 문서에서의 위치에 관계없이 모든 book 하위 요소를 선택합니다.
bookstore//book: bookstore: 아래 위치에 상관없이 bookstore 요소의 자손인 모든 book 요소를 선택합니다.
//@lang: lang이라는 이름의 모든 속성을 선택합니다.
이러한 단일 쿼리만 사용하면 예상한 결과를 얻지 못할 수 있으므로 다른 쿼리 문과 결합해야 합니다. 다음은 일치해야 하는 몇 가지 구문입니다.
Predicate(보다 정확한 쿼리 결과를 얻으려면 대괄호 사용):
bookstore 요소의 첫 번째 하위 요소 book 경로를 /bookstore/book으로 선택합니다. [1].
/bookstore/book[last()]: bookstore의 하위 요소인 마지막 book 요소를 선택합니다.
/bookstore/book[last()-1]: 서점의 하위 요소인 끝에서 두 번째 책 요소를 선택합니다.
/bookstore/book[position()
//title[@lang]: lang이라는 속성이 있는 모든 제목 요소를 선택합니다.
//title[@lang='eng']: 값이 eng인 lang 속성이 있는 모든 제목 요소를 선택합니다.
/bookstore/book[price>35.00]: bookstore 요소의 book 요소를 모두 선택하고, 가격 요소의 값은 35.00보다 커야 합니다.
/bookstore/book[price>35.00]/title: bookstore 요소에서 book 요소의 title 요소를 모두 선택하고, 가격 요소의 값은 35.00보다 커야 합니다.
알 수 없는 노드 선택:
*: 모든 요소 노드와 일치합니다.
@*: 모든 속성 노드와 일치합니다.
node(): 모든 유형의 노드와 일치합니다.
예:
/bookstore/*: bookstore 요소의 모든 하위 요소를 선택합니다.
//*: 문서의 모든 요소를 선택합니다.
//title[@*]: 속성이 있는 모든 제목 요소를 선택합니다.
여러 경로 선택:
//book/title | //book/price: 책 요소의 모든 제목 및 가격 요소를 선택합니다.
//title | //가격: 문서의 모든 제목 및 가격 요소를 선택합니다.
/bookstore/book/title | //price: bookstore 요소의 book 요소에 속하는 모든 title 요소와 문서의 모든 가격 요소를 선택합니다.
몇 가지 쿼리 예를 살펴보세요.
제목을 쿼리합니다. 두 번째 책 값: /bookstore/book[1]/title
모든 책의 제목 값을 쿼리합니다. /bookstore/book//title
언어 속성: /bookstore /book//title[@lang]
위 내용은 xPath 주입의 기본 구문은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!