javascript 빠른 시작 26--XPath
10157 단어 JavaScript
XPath는 XML 문서에서 정보를 찾는 언어입니다.XPath는 XML 문서에서 요소 및 속성을 이동하는 데 사용됩니다.XPath는 W3C XSLT 표준의 주요 요소이며 XQuery와 XPointer는 동시에 XPath 표현 위에 구축되었다.따라서 XPath에 대한 이해는 많은 고급 XML 응용의 기초이다.사실 우리는 낯설지 않다. XPath와 가장 비슷한 것이 바로 CSS의 선택기이다.CSS에서는 CSS 선택부호를 사용하여 요소를 선택하여 스타일을 적용하고 XSLT에서는 XPath를 사용합니다. XPath는 CSS 선택기와 같이 강력합니다!다음은 CSS 선택자와 XPath 선택자의 몇 가지 대조입니다.
//CSS
body p // body p
body>p // body p
* //
// XPath
body//p
body/p
*
이 XPath 표현의 의미는 아직 알 수 없지만 CSS 선택부호와 매우 비슷하다는 것을 알 수 있습니다!그러나 XPath는 바디 요소의 구체적인 위치에서 p를 찾을 수 있거나 전 N개의 p를 선택할 수 있는 더 강한 부분이 있다.
body/p[position()=4] // XPath body 4 p , 1
body/p[position()<3] // body p
XPath는 경로 표현식을 사용하여 XML 문서의 노드 또는 노드 세트를 선택합니다.이러한 경로 표현식은 우리가 일반적인 컴퓨터 파일 시스템에서 본 표현식과 매우 비슷하다.또한 XPath에는 100개 이상의 내장 함수가 포함되어 있습니다.이 함수들은 문자열 값, 수치, 날짜와 시간 비교, 노드와 QName 처리, 서열 처리, 논리 값 등에 사용된다.
XPath 쓰기
XPath는 경로 표현식을 사용하여 XML 문서에서 노드를 선택합니다.노드는 경로 (path) 또는 단계 (step)를 따라 선택됩니다."/"는 문서 노드를 나타냅니다.현재 노드현재 노드의 부모 노드를 나타낸다.예:
{ XPath , !
/ { ,nodeType 9
/root { , (Unix), /
/root/child/.. { root child ( root)
다음은 자주 사용하는 경로 표현식들입니다
<?xml version="1.0"?>
<root>
<child attr="attr" />
<child>
<a><desc /></a>
</child>
</root>
{ XML XPath , document
/root { root
root { root
child { , child document
//child { child ,//
//@attr { attr
/root/child//desc { child desc
서술어
술어는 노드를 찾을 때 더욱 상세한 정보를 제공하는 데 사용되며 술어는 방괄호에 박혀 있다.다음은 서술어가 있는 XPath 표현식입니다.
/root/child[3] { root child , , , 1
//child[@attr] { attr child
//child[@attr="val"]/desc { attr val child desc
//child[desc] { desc child
//child[position()>3] {position() XPath ,
//child[@attr>12] {XPath , attr 12 child
//child[last()] {last() , child
와일드카드
XPath 와일드카드를 사용하여 알 수 없는 XML 요소를 선택할 수 있습니다.
/root/* {
/root/node() { ,
//* {
//child[@*] { child
//@* {
조합 경로
CSS에서 쉼표 조합을 사용하여 여러 개의 선택자를 사용하는 것과 같이 XPath는 "|"를 사용하여 여러 경로를 조합하는 문법을 지원합니다!
/root | /root/child { root child
//child | //desc { child desc
XPath 연산자
XPath 표현식에 사용할 수 있는 연산자는 다음과 같습니다.
축은 현재 노드에 상대적인 노드 세트를 정의합니다.다음 사용 가능한 축 이름 및 해당 결과:
사실상 완전한 XPath 표현식은'/'와'보'로 구성되고 보는'축','노드 테스트'와'술어'로 구성된다.다음과 같습니다.
step/step/..... { XPath
{step
:: [ ]
일반적인 XPath 표현식에서 술어가 없으면 다른 조건의 제한이 없고 축의 이름이 없으면 기본적으로child를 사용합니다.예를 들어 "abc"와 "child:::abc"는 같은 효과가 있고, 다음은 축 이름을 사용하는 것과 같은 간단한 XPath 표현식입니다.
XPath는 포지션과last가 함수인 것과 같은 함수 라이브러리도 포함하는데 일반적인 함수는 술어에 사용되고 XSLT와 XQuery에서는 더욱 광범위하게 사용된다.
브라우저의 XPath
IE 브라우저는 XPath에 대한 구현이 비교적 간단합니다.하나의 XMLDOM 대상(그리고 모든 노드)에는 selectSingleNode와selectNodes 방법이 있고 XPath 표현식에 전송되며,selectNodes는 일치하는 노드 목록을 되돌려주고,selectSingleNode는 목록의 첫 번째 항목만 되돌려줍니다!
var xmlDom = getXMLDOM();// XML DOM
loadXMLFile(xmlDom,"text.xml");
var root = xmlDom.selectSingleNode("/*");//
root = xmlDom.selectNodes("/*")[0];//
var lastChild = xmlDom.selectSingleNode("/*/*[last()]");
Mozilla는 DOM 표준에 따라 XPath를 지원합니다.DOM Level 3 추가 표준 DOM Level 3 XPath는 DOM에서 XPath 표현식을 계산하는 데 사용되는 인터페이스를 정의합니다.유감스럽게도, 이 표준은 마이크로소프트의 직관적인 방식보다 훨씬 복잡하다.
XPath와 관련된 대상이 많지만 가장 중요한 두 가지는 XPath Evaluator와 XPath Result이다.XPathEvaluator는 메서드 evaluate()를 사용하여 XPath 표현식을 계산합니다.
evaluate () 방법은 다섯 가지 인자가 있는데 그것이 바로 XPath 표현식, 상하문 노드, 명명 공간 해석 프로그램과 되돌아오는 결과의 유형이며, 동시에 XPath Result에 결과를 저장합니다. (보통null)
명명 공간 해석 프로그램은 XML 코드가 XML 명명 공간을 사용할 때만 필요하기 때문에 보통 비어 null로 설정합니다.결과를 반환하는 유형은 다음 10개의 상수 값 중 하나일 수 있습니다.
다음은 ORDEREDNODE_ITERATOR_TYPE의 예:
var xmlDom = getXMLDOM();// XML DOM
loadXMLFile(xmlDom,"text.xml");
var evaluator = new XPathEvaluator();
var result =evaluator.evaluate("/root",xmlDom,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);
var node;
if (result) {// null
while(node=result.iterateNext()) {// iterateNext
alert(node.tagName);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.