2016-10-12 75 views
0

我想解析Java的DocumentBuilder的这个XML文件中值:解析XML用的DocumentBuilder和阅读

<GLS version="1" type="telegram"> 
    <telegram version="1"> 
     <params> 
      <id_batch>60500.012.16"</id_batch> 
      <supplier value="HUGO"/> 
     </params> 
    </telegram> 
</GLS> 

阅读id_batch标签是没有问题的,但现在我可以在供应商标签的价值?

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import java.io.File; 


DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = dbFactory.newDocumentBuilder(); 
Document doc = docBuilder.parse(file); 

doc.getDocumentElement().normalize(); 

System.out.println("Root element: " + doc.getDocumentElement().getNodeName()); 

NodeList nList = doc.getElementsByTagName("params"); 

for (int i = 0; i < nList.getLength(); i++) { 
     Node nNode = nList.item(i); 

     System.out.println("\nCurrent Element: " + nNode.getNodeName()); 

     if (nNode.getNodeType() == Node.ELEMENT_NODE) { 

      Element eElement = (Element) nNode; 
      System.out.println("-1-> " + eElement.getElementsByTagName("id_batch").item(0).getTextContent()); 
      System.out.println("-2-> " + eElement.getElementsByTagName("supplier").item(0).getAttribute("value")); 

      } 
     } 

此错误出现: 无法解析法 '的getAttribute(java.lang.String中)'

东西我做错了!但是什么?

感谢

回答

3

使用自己的例子,你只需要调用getAttribute(..)。因此,添加以下内容:

System.out.println("-3-> " + eElement.getElementsByTagName("supplier").item(0).getAttribute("value")); 
+0

感谢您的帮助,但现在出现错误:无法解析法“的getAttribute(java.lang.String中)” – Twistleton

+0

我找到了解决方案内容:System.out.println(“ - 3 - >“+((Element)eElement.getElementsByTagName(”supplier_name“)。item(0))。getAttribute(”value“)); – Twistleton

1

value="HUGO"是的getElementsByTagName供应商的属性...所以你正在试图让错误......

尝试,而不是:

System.out.println("value : " + eElement.getAttribute("supplier").getAttribute("value"));