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

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
22 Command Prompt Shell Interface in Java 졸리운_곰 2015.07.12 310
21 java console 졸리운_곰 2015.07.05 223
20 Java Console and File Input/Output Cheat Sheet 졸리운_곰 2015.07.05 249
19 Demonstrates standard I/O redirection 졸리운_곰 2015.07.05 232
18 Java로 외부 프로그램 실행 ( ProcessBuilder 사용) 졸리운_곰 2015.03.17 1175
17 Java Clipboard 자바 클립보드 복사/붙여넣기 졸리운_곰 2015.03.17 2214
16 Java Inner class 자바 중첩(내부)클래스 졸리운_곰 2015.03.03 887
15 IzPack으로 GUI 설치 프로그램 만들기 file 졸리운_곰 2015.02.15 638
14 [Java],[AWT],[Layout],[AWT Layout], file 졸리운_곰 2015.02.13 370
13 [Java],[AWT],[SWING], Java GUI file 졸리운_곰 2015.02.13 922
12 [Java][AWT 개요] file 졸리운_곰 2015.02.13 464
11 javac 로 컴파일 시 유니코드(utf-8) 한글 소스 코드 컴파일 문제 졸리운_곰 2015.02.02 1134
10 파일 존재 여부 판단, 디렉토리 있는지 확인 함수; File Directory Exist 졸리운_곰 2014.03.03 1215
9 Java Static 변수 졸리운_곰 2014.01.28 1102
8 Properties 클래스 사용하기. 졸리운_곰 2014.01.28 1026
7 Java => Thread 졸리운_곰 2014.01.28 835
6 Java 세마포어(Semaphore) 가을의 곰을... 2013.12.11 2517
5 Java Thread 제어 (Thread Pool) 가을의 곰을... 2013.12.11 975
4 Java Delay (지연실행) 루틴 가을의 곰을... 2013.11.20 1364
3 Java Runtime시 Memory monitoring 가을의 곰을... 2013.11.19 875
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED