xpath가 왜 필요한가요?
dom4j를 사용하면 여러 레이어에서 요소를 얻을 수 없으며 레이어별로 가져와야 하는데 이는 매우 번거로운 작업입니다.
따라서 특정 노드에 더 편리하게 접근하기 위해 xpath 기술을 사용하면 특정 노드를 매우 편리하게 읽을 수 있습니다.
xpath는 일반적으로 dom4j와 함께 사용됩니다. xpath를 사용하려면 새 패키지 jaxen-1.1-beta-6.jar을 도입해야 합니다
xpath의 기본 구문은 다음과 같습니다.
1. 기본 xpath 구문은 파일 시스템에서 파일을 찾는 것과 비슷합니다. 슬래시 /
Start로 시작하면 경로는 요소에 대한 절대 경로를 나타냅니다.
(1)/AAA
은 루트 요소 AAA
<AAA>这里 <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> <DDD/> <CCC/><AAA/>这里
선택을 나타냅니다. (2)/AAA/CCC
, AAA
<AAA> <BBB/> <CCC/>这里 <BBB/> <BBB/> <DDD> <BBB/> <DDD/> <CCC/>这里<AAA/>
의 모든 CCC 하위 요소 선택을 나타냅니다. (3) /AAA/DDD/BBB
, AAA
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/>这里 <DDD/> <CCC/><AAA/>그렇다면 dom4j에서 xpath를 어떻게 사용하나요? 실제로는 매우 간단합니다.
//1.得到SAXReader解析器SAXReader saxReader = new SAXReader(); //2.指定去解析哪个文件Document document = saxReader.read(new File(path)); //3.可以使用xpath随心读取// document.selectNodes(args)返回多个元素 // document.selectSingleNode(args)返回单个元素List nodes = document.selectNodes("/AAA/BBB");dom4j를 통해 문서 개체를 가져온 후 문서의
메서드를 사용할 수 있습니다. 이 메서드는 작성한 xpath 경로에 따라 selectNodes(args)
를 반환합니다. dom4j와 유사합니다. List
메서드도 있습니다. selectSingleNode(args)
다음은 계속해서 다른 xpath 구문을 소개합니다.
2. 경로가 이중 슬래시 로 시작하면 문서의 모든 파일이 이중 슬래시 충족 //
후속 규칙의 요소(계층 관계에 관계 없음) //
, 이는 모든 BBB 요소를 선택한다는 의미 //BBB
<AAA> <BBB/>这里 <CCC/> <BBB/>这里 <DDD> <BBB/>这里 </DDD> <CCC> <DDD> <BBB/>这里 <BBB/>这里 </DDD> </CCC></AAA>(2)
, 모든 상위 요소를 의미 DDD //DDD/BBB
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/>这里 </DDD> <CCC> <DDD> <BBB/>这里 <BBB/>这里 </DDD> </CCC></AAA>
의 BBB 요소입니다. 3. 별표 는 별표 *
앞의 경로에 있는 모든 요소를 선택한다는 의미입니다.
, 경로가 /AAA/CCC/DDD에 연결된 모든 요소를 선택함을 의미: /AAA/CCC/DDD/*
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/>这里 <BBB/>这里 <EEE/>这里 <FFF/>这里 </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC></AAA>(2)
, 다음을 포함하는 모든 BBB 요소를 의미 3개의 상위 요소 /*/*/*/BBB
<AAA> <XXX> <DDD> <BBB/>这里 <BBB/>这里 <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/>这里 <BBB/>这里 <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB>这里 <BBB> <BBB/> </BBB> </BBB> </CCC></AAA>(3)
, 이는 모든 요소 선택을 의미합니다. //*
4. 대괄호 안의 표현식은 요소를 추가로 지정할 수 있습니다. 는 선택 세트 위치의 요소 수를 나타내고, last() 함수는 선택 세트의 마지막 요소를 나타냅니다. 여기서 첨자는 0이 아닌 1부터 시작한다는 점에 유의하는 것이 중요합니다! (1)
, AAA의 첫 번째 BBB 하위 요소 선택을 의미 /AAA/BBB[1]
<AAA> <BBB/>这个 <BBB/> <BBB/> <BBB/></AAA>(2)
, AAA의 마지막 BBB 요소 /AAA/BBB[last()]
<AAA> <BBB/> <BBB/> <BBB/> <BBB/>这个</AAA>선택을 의미 AAA
5. 속성에 대한 작업
(1), 모든 id 속성을 선택합니다. 참고: 모든 id 속성은 노드로 반환되지만 그렇지 않습니다. id 속성이 있는 노드를 반환합니다. //@id
<AAA> <BBB id="b1"/>返回这里的id属性节点 <BBB id="b2"/>也返回这里的id属性节点 <BBB name="bbb"/> <BBB/></AAA>(2)
, ID 속성이 //BBB[@id]
<AAA> <BBB id="b1"/>返回这个BBB节点 <BBB id="b2"/>也返回这个BBB节点 <BBB name="bbb"/> <BBB/></AAA>(3)
인 모든 BBB 노드를 선택하고, 이름 속성이 //BBB[@name]
<AAA> <BBB id="b1"/> <BBB id="b2"/> <BBB name="bbb"/>返回这个BBB节点 <BBB/></AAA>( 4)
, //BBB[@*]
<AAA> <BBB id="b1"/>返回这个BBB节点 <BBB id="b2"/>返回这个BBB节点 <BBB name="bbb"/>返回这个BBB节点 <BBB/></AAA>(5)
속성이 있는 모든 BBB 노드를 선택하고, //BBB[not(@*)]
<AAA> <BBB id="b1"/> <BBB id="b2"/> <BBB name="bbb"/> <BBB/>这个</AAA>
속성이 없는 모든 BBB 노드를 선택합니다. 6의 값 속성을 선택 기준으로 사용할 수 있습니다
(1), 속성 ID가 포함된 BBB 요소를 선택하고 해당 값은 'b1' //BBB[@id='b1']
<AAA> <BBB id="b1"/>这个 <BBB name="bbb"/> <BBB name="bbb"/></AAA>
7.선택한 요소 수를 계산하는 기능count()
, 2개의 BBB 하위 요소가 포함된 요소 선택//*[count(BBB)=2]
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD>返回这个元素 <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE></AAA>(2)
, 하위 요소 2개를 포함하는 요소 선택//*[count(*)=2]
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD>返回这个元素 <BBB/> <BBB/> </DDD> <EEE>也返回这个元素 <CCC/> <DDD/> </EEE></AAA>
많은 함수 적용을 포함하여 그 밖에도 많은 구문이 있지만 많이 사용되지 않으며 여기서는 소개하지 않습니다
또한 위에 소개된 구문 포인트는 다음 xml 문서와 같이 어떤 방식으로든 결합될 수 있습니다.
<AAA> <BBB id="b1"> <CCC> <KKK>k1</KKK> </CCC> <CCC> <KKK>k2</KKK>这个 </CCC> </BBB> <BBB id="b2"/> <BBB name="bbb"/></AAA>이제 첫 번째 BBB 하위 요소를 찾고 싶다고 가정합니다. AAA 요소 아래 아래 두 번째 CCC 하위 요소의 KKK 하위 요소에 대해 xpath 경로는 다음과 같이 작성되어야 합니다.
/AAA/BBB[1]/CCC[2]/KKK
따라서 특정 노드에 더 편리하게 접근하기 위해 xpath 기술을 사용하면 특정 노드를 매우 편리하게 읽을 수 있습니다.
xpath의 기본 구문은 다음과 같습니다.xpath는 일반적으로 dom4j와 함께 사용됩니다. xpath를 사용하려면 새 패키지 jaxen-1.1-beta-6.jar을 도입해야 합니다
1. 기본 xpath 구문은 파일 시스템에서 파일을 찾는 것과 비슷합니다. 슬래시 Start로 시작하면 경로는 요소에 대한 절대 경로를 나타냅니다. /
은 루트 요소 AAA/AAA
<AAA>这里 <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> <DDD/> <CCC/><AAA/>这里선택을 나타냅니다. (2)
, AAA의 모든 CCC 하위 요소 선택을 나타냄 /AAA/CCC
<AAA> <BBB/> <CCC/>这里 <BBB/> <BBB/> <DDD> <BBB/> <DDD/> <CCC/>这里<AAA/>(3)
, AAA DDD의 모든 BBB 하위 요소 선택을 나타냄 /AAA/DDD/BBB
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/>这里 <DDD/> <CCC/><AAA/>
那么怎么在dom4j中运用xpath呢?其实很简单:
//1.得到SAXReader解析器SAXReader saxReader = new SAXReader(); //2.指定去解析哪个文件Document document = saxReader.read(new File(path)); //3.可以使用xpath随心读取 // document.selectNodes(args)返回多个元素 // document.selectSingleNode(args)返回单个元素List nodes = document.selectNodes("/AAA/BBB");
通过dom4j得到document对象后,可以使用document的selectNodes(args)
方法,这个方法会根据你写的xpath路径返回一个List
,余下的操作就和dom4j类似了。
同时它也有一个selectSingleNode(args)
方法,用于返回一个单个的Node。
下面继续介绍其他的xpath语法:
2.如果路径以双斜线//
开头,则表示文档中所有满足双斜线//
之后规则的元素(无论层级关系)
(1)//BBB
,它表示选择所有BBB元素
<AAA> <BBB/>这里 <CCC/> <BBB/>这里 <DDD> <BBB/>这里 </DDD> <CCC> <DDD> <BBB/>这里 <BBB/>这里 </DDD> </CCC></AAA>
(2)//DDD/BBB
,表示所有父元素是DDD的BBB元素
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/>这里 </DDD> <CCC> <DDD> <BBB/>这里 <BBB/>这里 </DDD> </CCC></AAA>
3.星号*
表示选择所有由星号之前路径所定位的元素
(1)/AAA/CCC/DDD/*
,它表示选择所有路径依附于/AAA/CCC/DDD的元素:
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/>这里 <BBB/>这里 <EEE/>这里 <FFF/>这里 </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC></AAA>
(2)/*/*/*/BBB
,它表示所有的有3个祖先元素的BBB元素
<AAA> <XXX> <DDD> <BBB/>这里 <BBB/>这里 <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/>这里 <BBB/>这里 <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB>这里 <BBB> <BBB/> </BBB> </BBB> </CCC></AAA>
(3)//*
,它表示选择所有的元素
4.方括号里的表达式可以进一步地指定元素,其中数字表示元素在选择集里的位置,而last()函数则表示选择集中的最后一个元素。特别要注意的是这里的下标是从1开始的,而不是0!
(1)/AAA/BBB[1]
,它表示选择AAA的第一个BBB子元素
<AAA> <BBB/>这个 <BBB/> <BBB/> <BBB/></AAA>
(2)/AAA/BBB[last()]
,表示选择AAA的最后一个BBB元素
<AAA> <BBB/> <BBB/> <BBB/> <BBB/>这个</AAA>
5.对属性的操作
(1)//@id
,选择所有的id属性,注意:是把所有的id属性当做节点返回,而不是返回有id属性的节点。
<AAA> <BBB id="b1"/>返回这里的id属性节点 <BBB id="b2"/>也返回这里的id属性节点 <BBB name="bbb"/> <BBB/></AAA>
(2)//BBB[@id]
,选择所有有id属性的BBB节点
<AAA> <BBB id="b1"/>返回这个BBB节点 <BBB id="b2"/>也返回这个BBB节点 <BBB name="bbb"/> <BBB/></AAA>
(3)//BBB[@name]
,选择所有有name属性的BBB节点
<AAA> <BBB id="b1"/> <BBB id="b2"/> <BBB name="bbb"/>返回这个BBB节点 <BBB/></AAA>
(4)//BBB[@*]
,选择所有有属性的BBB节点
<AAA> <BBB id="b1"/>返回这个BBB节点 <BBB id="b2"/>返回这个BBB节点 <BBB name="bbb"/>返回这个BBB节点 <BBB/></AAA>
(5)//BBB[not(@*)]
,选择所有没有属性的BBB节点
<AAA> <BBB id="b1"/> <BBB id="b2"/> <BBB name="bbb"/> <BBB/>这个</AAA>
6.属性的值可以被用来作为选择的准则
(1)//BBB[@id='b1']
,选择含有属性id且其值为’b1’的BBB元素
<AAA> <BBB id="b1"/>这个 <BBB name="bbb"/> <BBB name="bbb"/></AAA>
7.count()
函数可以计数所选元素的个数
(1)//*[count(BBB)=2]
,选择含有2个BBB子元素的元素
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD>返回这个元素 <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE></AAA>
(2)//*[count(*)=2]
,选择含有2个子元素的元素
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD>返回这个元素 <BBB/> <BBB/> </DDD> <EEE>也返回这个元素 <CCC/> <DDD/> </EEE></AAA>
还有很多其他的语法,包括很多函数的应用,用的不多,这里不做介绍
另外,上述介绍的几点语法可以任意组合,比如下述的xml文档:
<AAA> <BBB id="b1"> <CCC> <KKK>k1</KKK> </CCC> <CCC> <KKK>k2</KKK>这个 </CCC> </BBB> <BBB id="b2"/> <BBB name="bbb"/></AAA>
假如我们现在要找AAA元素下面的第1个BBB子元素下面的第2CCC子元素的KKK子元素,则xpath路径应该这么写: /AAA/BBB[1]/CCC[2]/KKK
以上就是XML——XPATH语法介绍 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

RSS는 컨텐츠를 게시하고 구독하는 데 사용되는 XML 기반 형식입니다. RSS 파일의 XML 구조에는 컨텐츠 항목을 나타내는 루트 요소, 요소 및 여러 요소가 포함됩니다. XML Parser를 통해 RSS 파일을 읽고 구문 분석하고 사용자는 최신 컨텐츠를 구독하고 얻을 수 있습니다.

XML은 RSS에서 구조화 된 데이터, 확장 성, 크로스 플랫폼 호환성 및 구문 분석 검증의 장점을 가지고 있습니다. 1) 구조화 된 데이터는 컨텐츠의 일관성과 신뢰성을 보장합니다. 2) 확장 성은 콘텐츠 요구에 맞게 맞춤형 태그를 추가 할 수 있습니다. 3) 크로스 플랫폼 호환성은 다른 장치에서 원활하게 작동합니다. 4) 분석 및 검증 도구는 피드의 품질과 무결성을 보장합니다.

XML에서 RSS 구현은 구조화 된 XML 형식을 통해 컨텐츠를 구성하는 것입니다. 1) RSS는 채널 정보 및 프로젝트 목록과 같은 요소를 포함하여 XML을 데이터 교환 형식으로 사용합니다. 2) RSS 파일을 생성 할 때는 사양에 따라 컨텐츠를 구성하고 구독을 위해 서버에 게시해야합니다. 3) RSS 파일은 리더 또는 플러그인을 통해 구독하여 컨텐츠를 자동으로 업데이트 할 수 있습니다.

RSS의 고급 기능에는 컨텐츠 네임 스페이스, 확장 모듈 및 조건부 구독이 포함됩니다. 1) 컨텐츠 네임 스페이스는 RSS 기능을 확장합니다. 2) 메타 데이터를 추가하기 위해 Dublincore 또는 iTunes와 같은 확장 된 모듈, 3) 특정 조건에 따라 조건부 구독 필터 항목. 이러한 기능은 XML 요소 및 속성을 추가하여 정보 수집 효율성을 향상시켜 구현됩니다.

rssfeedsusexmltostructurecontentupdates.1) xmlprovideahierarchicalstructurefordata.2) the ElementDefinesThefeed 'sidentityandContainsElements.3) elementsreent indindividualcontentpieces.4) rssisextensible, 허용 Bestpracticesin

RSS 및 XML은 웹 컨텐츠 관리를위한 도구입니다. RSS는 컨텐츠를 게시하고 구독하는 데 사용되며 XML은 데이터를 저장하고 전송하는 데 사용됩니다. 컨텐츠 게시, 구독 및 업데이트 푸시와 함께 작동합니다. 사용의 예로는 RSS 게시 블로그 게시물 및 XML 저장 도서 정보가 있습니다.

RSS 문서는 자주 업데이트되는 콘텐츠를 게시하고 구독하는 데 사용되는 XML 기반 구조 파일입니다. 주요 기능에는 1) 자동화 된 컨텐츠 업데이트, 2) 컨텐츠 집계 및 3) 브라우징 효율 향상이 포함됩니다. RSSFEED를 통해 사용자는 적시에 다른 소스에서 최신 정보를 구독하고 얻을 수 있습니다.

RSS의 XML 구조에는 다음이 포함됩니다. 1. XML 선언 및 RSS 버전, 2. 채널 (채널), 3. 항목. 이러한 부분은 RSS 파일의 기초를 형성하여 사용자가 XML 데이터를 구문 분석하여 컨텐츠 정보를 얻고 처리 할 수 있도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
