[jdom-interest] again xpath with default namespace
    Laurent Bihanic 
    laurent.bihanic at atosorigin.com
       
    Thu May  3 00:43:44 PDT 2007
    
    
  
Hi,
florianwendland at freenet.de wrote:
> i have a problem by creating an xpath expression with an default 
> namespace. The xpath expression didn't select the nodes, although i have 
> added the namespace to the xpath by calling 
> xp.addNamespace("http://www.test.de");
There is no default namespace in XPath.
So you have to use a namespace prefix in your XPath expressions. You can 
choose any prefix as there is no relationship between the prefixes used in 
XPath and the ones in the document: prefixes are just shortcuts and the 
matching is done on the actual namespace URIs.
> My document looks like:
> 
> <test xmlns="http://www.test.de">
>     <node>
>     </node>
> </test>
> 
> The source:
> 
> XPath xp = XPath.newInstance("/test/node");
> xp.addNamespace(ExiilConstants.NS);
> xp.selectNodes(document);
> 
> Result of the list is allways 0.
The following should work:
XPath xp = XPath.newInstance("/x:test/x:node");
xp.addNamespace("x", "http://www.test.de");
xp.selectNodes(document);
If you want to use a JDOM Namespace object, you must create one with a prefix:
Namespace ns = Namespace.getNamespace("x", "http://www.test.de");
xp.addNamespace(ns);
Laurent
    
    
More information about the jdom-interest
mailing list