使用SAXReader从xml文件读取元素

问题描述:

我试图使用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

您可以对当前元素使用变量缓冲区。当解析器完成他的工作时,您将拥有最后一项 –

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

//XREClientView/XREClientView[5] 

这是说找到一个XREClientView其中包含一个名为XREClientView至少五个子节点,并返回五分之一。的XPath开始

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

在那里你可以制定出什么来替代...。目前还不完全清楚您可以使用哪些独特的属性值来查找您感兴趣的节点。

+0

“硬编码”项目索引不是一个好的解决方案 –

+0

您是否阅读过该问题?我引用了OP的尝试,并没有暗示他硬编码任何东西。这就是说,鉴于“有趣的”XML模式,可能没有其他方法来实现OP的目标。 –

+0

对不起,我的错误 –