2016-03-14 63 views
0

我試圖使用SAXReader讀取下面的xml內容 我必須讀取節點名稱"SelogerListController"的子元素。 節點名稱"SelogerListController"包含3個子節點。使用SAXReader從xml文件讀取元素

我的主要目的是讓節點名稱的第一個節點的子elemnts "SelogerListControllerlike"

src="http://res/Favorite_Badge.png" ,src="http://res/sm_aries.png" 

src="http://res/sm_cancer.png" and http://res/Favorite_Badge.png 
............... 

和佈雷細節也..

使用代碼

SAXReader reader = new SAXReader(); 
     Document document; 
     String xPath = "//XREClientView/XREClientView[5]"; 
     String nodeName = null; 

     List<Element> childViews; 
     try { 
      document = reader.read("F://TestNewXMLAfter.xml"); 

      List<Node> nodes = document.selectNodes(xPath); 
      for (Node node : nodes) { 
       System.out.println("name :: " + node.valueOf("@name")); 
       System.out.println(node.getPath()); 
       nodeName = node.valueOf("@name"); 
       if (nodeName.equals("SelogerListController")) { 
        childViews = ((Element) node).elements(); 

        for (Element element : childViews) { 
         Element ele = element.element("XREClientImage"); 
        } 

        break; 
       } 
      } 
     } catch (DocumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

您可以對當前元素使用變量緩衝區。當解析器完成他的工作時,您將擁有最後一項 –

回答

1

您在您的文章顯示的XPath是:

//XREClientView/XREClientView[5] 

這是說找到一個XREClientView其中包含一個名爲XREClientView至少五個子節點,並返回五分之一。的XPath開始

//XREClientView[@name='SelogerListController']/... 

在那裏你可以制定出什麼來替代...。目前還不完全清楚您可以使用哪些獨特的屬性值來查找您感興趣的節點。

+0

「硬編碼」項目索引不是一個好的解決方案 –

+0

您是否閱讀過該問題?我引用了OP的嘗試,並沒有暗示他硬編碼任何東西。這就是說,鑑於「有趣的」XML模式,可能沒有其他方法來實現OP的目標。 –

+0

對不起,我的錯誤 –