[jdom-interest] XPath problems using JDom

Laurent Bihanic laurent.bihanic at atosorigin.com
Mon Oct 22 09:01:27 PDT 2007


Check out your document : there is the space character before the http://... 
in the default namespace declaraction. Remove it from the document or add it 
to the namespace declaraction for the XPath object and it works.

Laurent


Bhave, Ameya a écrit :
> Hi,
> 
> I have read some of the literature on this subject in the archives, and 
> am still unable to sort my problem out. Basically I am trying to read an 
> xml file using an xpath expression.
> 
> My xml file looks like this:
> 
> ------
> <?xml version="1.0" encoding="UTF-8"?>
> <OTA_AirLowFareSearchRQ EchoToken="0" MaxResponses="20" 
> Mode="MasterPricer" SequenceNmbr="0" Target="Amadeus" xmlns=" 
> http://www.opentravel.org/OTA/2003/05" 
> xmlns:helper="xalan://com.openjaw.rules.XSLHelper" 
> xmlns:xalan="http://xml.apache.org/xalan <http://xml.apache.org/xalan>">
>     <POS>
>         <Source ISOCurrency="GBP" PseudoCityCode="1AC">
>             <ns1:RequestorID 
> ID="H6265/AAA/32835/2006/41000/OPENJAW/MERLIN" ID_Context="ABTA" 
> xmlns:ns1=" http://www.opentravel.org/OTA/2003/05" 
> xmlns:ns2="http://www.tui-uk.co.uk/OTA_EXT/2006" xmlns:ns3=" 
> http://www.openjawtech.com/2005" 
> xmlns:ns4="http://www.opentravel.org/OTA/2002/08"/>
>         </Source>
>     </POS>
>     <OriginDestinationInformation>
>         <DepartureDateTime>2007-10-23T00:00:00.000+01:00</DepartureDateTime>
>         <OriginLocation CodeContext="IATA" LocationCode="LGW"/>
>         <DestinationLocation CodeContext="IATA" LocationCode="PMI"/>
>     </OriginDestinationInformation>
>     <OriginDestinationInformation>
>         <DepartureDateTime>2007-10-30T00:00:00</DepartureDateTime>
>         <OriginLocation CodeContext="IATA" LocationCode="PMI"/>
>         <DestinationLocation CodeContext="IATA" LocationCode="LGW"/>
>     </OriginDestinationInformation>
>     <TravelerInfoSummary>
>         <AirTravelerAvail>
>             <PassengerTypeQuantity Code="ADT" Quantity="2"/>
>             <PassengerTypeQuantity Code="CHD" Quantity="3"/>
>         </AirTravelerAvail>
>     </TravelerInfoSummary>
> </OTA_AirLowFareSearchRQ>
> 
> ------
> 
> And the code to access the info (using xpath) is:
> 
> -------
> public static void getXPathValue(File file)
>    {
>       Document xmlDoc = getDocumentForFile(file);
> 
>       try
>       {
> //         XPath.setXPathClass(org.jaxen.jdom.JDOMXPath.class);
>          XPath xPath = 
> XPath.newInstance("/ota:OTA_AirLowFareSearchRQ/ota:OriginDestinationInformation"); 
> 
>          xPath.addNamespace("ota", 
> "http://www.opentravel.org/OTA/2003/05"); //default ns
> 
>          xPath.addNamespace("helper", 
> "xalan://com.openjaw.rules.XSLHelper");
>          xPath.addNamespace("xalan", "http://xml.apache.org/xalan");
>          xPath.addNamespace("ns2", " http://www.tui-uk.co.uk/OTA_EXT/2006");
>          xPath.addNamespace("ns1", "http://www.openjawtech.com/2005");
>          xPath.addNamespace("ns3", " 
> http://www.opentravel.org/OTA/2002/08");     
> 
> 
> 
> 
>          List nodes = xPath.selectNodes(xmlDoc);
>          System.out.println("Nodes = " + nodes);
> 
>       }
>       catch (Exception e)
>       {
>          System.out.println("Error: " + e);
>          e.printStackTrace(System.out);
>       }
> }
> -------
> 
> The problem is that the list I get is empty.


More information about the jdom-interest mailing list