2010-01-29 30 views
1

我有以下XML:如何用Jaxen選擇空白名稱空間?

<config xmlns="http://www.someurl.com"> 
    <product> 
    <brand> 
     <content /> 
    </brand> 
    </product> 
</config> 

我讀它很好地進入JDOM。

但是,當我嘗試使用Jaxen來抓取內容時,我似乎無法得到任何東西。

這裏似乎有什麼不工作的例子:

XPath xpath = new JDOMXPath("config"); 

SimpleNamespaceContext namespaceContext = new SimpleNamespaceContext(); 
namespaceContext.addNamespace("", "http://www.someurl.com"); 

xpath.setNamespaceContext(namespaceContext); 

assert xpath.selectNodes(document).size() > 0 : "should find more than 0"; 

這一主張總是失敗。

我在做什麼錯?

回答

1

您必須指定一個前綴。使這個調用addNamespace(「hopfrog」,「http:// ...」); 然後製作XPath(「hopfrog:config」);

請記住,XML中的前綴不是真正的數據模型的一部分。真實數據模型爲每個元素和屬性分配一個可能爲空的URL。您可以在XPath中使用任何所需的前綴,只要它綁定到正確的URL即可。由於您希望將其留空,因此您會將前綴綁定爲「空白」。

+0

但是,這不符合我的xml! 是不是會匹配看起來像這樣的xml: 2010-01-29 05:33:16

+0

確實如此。前綴不是「真實的」。真正的事情是網址... – bmargulies 2010-01-29 12:13:03