xerces Xpath - search node from another node

Xalan.jar 를 임포트해야 함

 

I have the follows XML:

    <ONIXMessage>
        <Product>
            <RecordReference>9786071502131</RecordReference>
            <RecordReference>9786071502131</RecordReference>
        </Product>
        <Product>
            <RecordReference>9786071502131</RecordReference>
        </Product>
    </ONIXMessage>

And the follows java code:

    Element ONIXmessage = document.getDocumentElement();
    products = XPathAPI.selectNodeList(ONIXmessage, "/ONIXMessage/Product");

    for(int i = 0;i < products.getLength();i++) {  
        Node product = products.item(i);

        NodeList prova = XPathAPI.selectNodeList(ONIXmessage, "/ONIXMessage/Product/RecordReference");
        System.out.println(prova.getLength());

        NodeList prova2 = XPathAPI.selectNodeList(product, "/ONIXMessage/Product/RecordReference");
        System.out.println(prova2.getLength()); 
    }   

This code returns: 3 3 3 3

I think this code should return 3 2 3 1 because the "prova" variable contains all "RecordReference" nodes of the document, and "prova2" only contains the specific "RecordReference" nodes of only one product node.

How I can use XPATH to get only the nodes of a particular product?

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 
 
   

1 Answer 1

The first parameter to XPathAPI#selectNodeList is the context for the XPath expression.

Passing the product variable is reasonable and correct, but your XPath query is wrong: a slash / in the beginning of an expression denominates the root node of the current context, which in this case is the <ONIXMessage/> element.

Instead, start at the current context which is represented by the dot .. Remember your new expression is starting at this context, so your new XPath would be ./RecordReference. You could even ommit the ./, but I prefer adding these two characters making the query easier to read and understand:

NodeList prova2 = XPathAPI.selectNodeList(product, "./RecordReference");
share|improve this answer

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
70 Cliche Command-Line Shell file 졸리운_곰 2015.07.12 725
69 Command Prompt Shell Interface in Java 졸리운_곰 2015.07.12 310
68 Eclipse RCP 프로그램에서 Console 뷰 사용하기 file 졸리운_곰 2015.07.08 410
67 I/O from the Command Line 졸리운_곰 2015.07.05 267
66 java unix console 졸리운_곰 2015.07.05 208
65 java console 졸리운_곰 2015.07.05 223
64 Java Console and File Input/Output Cheat Sheet 졸리운_곰 2015.07.05 249
63 Demonstrates standard I/O redirection 졸리운_곰 2015.07.05 232
62 [SWING] 분석에 도전해볼만한 오픈소스 WebHarvest Java WebCrawler GUI file 졸리운_곰 2015.05.20 778
61 FreeLayout: A New Java Layout file 졸리운_곰 2015.05.14 315
60 JAVA SWT XML EDITOR sample : 자바 SWT XML 에디터 예제 file 졸리운_곰 2015.05.12 379
59 JAVA SWT 대화상자 예제 : 동적으로 컨트롤을 추가하고 삭제하는 예제 졸리운_곰 2015.05.11 345
58 JAVA SWT LINUX (Ubuntu) 에서 SWT Browser Control 사용시 졸리운_곰 2015.05.10 278
57 JAVA SWT TEST 자료 졸리운_곰 2015.05.07 752
56 SWT 스크롤 ScrolledComposite file 졸리운_곰 2015.05.03 407
» xerces Xpath - search node from another node 졸리운_곰 2015.04.29 335
54 xerces를 사용한 dom 방식의 xml parser lib 졸리운_곰 2015.04.28 426
53 자바에서 XPath 사용 하기 졸리운_곰 2015.04.28 539
52 Java XML정리 : 노드선택 Select Node(s) 졸리운_곰 2015.04.28 442
51 SWT JAVA 동적으로 컨트롤을 추가하는 다이얼로그2 file 졸리운_곰 2015.04.27 325
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED