2016-10-14 60 views
-3

請爲我提供以下場景的X-path表達式。使用xpath獲取具有特定屬性的頂級節點列表

元素標籤名稱不是恆定的,它們可以變化,層次結構也可以不同,如上例所示,路徑屬性存在於級別1,可能有一種情況不存在於級別1但低於該級別。

預期結果:NodeList nodeList = {a,z};清單不應包含B或Y節點

<root> 
    <a path="a"> 
     <b path="b"></b> 
    </a> 
    <z path="z"> 
     <y path="y"></y> 
    </z> 
</root> 
+0

目前尚不清楚你想達到什麼。當標籤名稱可以變化時,如何區分是否選擇元素?正如你所提到的那樣,不是按層次結構。 –

回答

2

簡單,因爲這命名的所有標籤:

/root/*[@path] 

更新

如果根的名字是不是一個常數:

/*/*[@path] 
+0

元素名稱可以是任何不具體的東西 – Deep

+0

行。查看我的更新。 –

+0

這項工作,但路徑屬性不存在於級別2,並且它在級別3存在,那麼它不起作用,如果這種情況存在任何可能的xpath,這將是有幫助的。非常感謝 – Deep

0

首先here是一個很好的XPath教程。

要搜索到XML只要按照這個語法:

String query = "tag[@param= '" + param.getName() + "']"; 
      log.debug("Xpath query = {}", query); 
      XPathExpression<Element> xpe = XPathFactory.instance().compile(query, Filters.element()); 
      for (Element urle : xpe.evaluate(packages)) { 
       urle.doSmth(); 
      } 

如果你想在文檔中的任意位置選擇的東西,使用//。 例如//x選擇X

相關問題