【问题标题】:Trying to parse an org.w3c.dom.Document XML Document in Java尝试在 Java 中解析 org.w3c.dom.Document XML 文档
【发布时间】:2018-03-02 16:49:18
【问题描述】:

我正在尝试仅从字符串标签中获取数字。现在,Java 程序认为字符串标签包含空值。提前感谢您的帮助!

这里是 XML

<?xml version="1.0"?>
<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
  <string>6540321</string>
  <string>6540322</string>
  <string>6540323</string>
  <string>6540324</string>
  <string>6540325</string>
</ArrayOfstring>

这是我尝试过的

public static void toOrderListFromXML() throws ParserConfigurationException, SAXException, IOException {
    File fXmlFile = new File("test.xml");

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    org.w3c.dom.Document doc = dBuilder.parse(fXmlFile);

    doc.getDocumentElement().normalize();

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

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

    for (int temp = 0; temp < nList.getLength(); temp++) {

        Node nNode = nList.item(temp);

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

        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
            Element eElement = (Element) nNode;

            System.out.println("Order number: " + eElement.getNodeValue());
        }
    }
}

输出:

Root element :ArrayOfstring

Current Element :string
Order number: null

Current Element :string
Order number: null

Current Element :string
Order number: null
.......................
.......................

这是我尝试学习的教程:http://www.java2s.com/Code/Java/XML/ParseanXMLstringUsingDOMandaStringReader.htm

【问题讨论】:

    标签: java xml


    【解决方案1】:
    public static void toOrderListFromXML() throws ParserConfigurationException, 
        SAXException, IOException {
            File fXmlFile = new File("test.xml");
    
            DocumentBuilderFactory dbFactory = 
       DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        org.w3c.dom.Document doc = dBuilder.parse(fXmlFile);
    
        doc.getDocumentElement().normalize();
    
        System.out.println("Root element :" + 
       doc.getDocumentElement().getNodeName());
    
        NodeList nList = doc.getElementsByTagName("string");
    
        for (int temp = 0; temp < nList.getLength(); temp++) {
    
            Node nNode = nList.item(temp);
    
            System.out.println("\nCurrent Element :" + nNode.getNodeName());
    
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
    
                System.out.println("Order number: " + 
              eElement.getTextContent());
             }
         }
       }
     }
    

    然后输出将是

    Root element :ArrayOfstring
    
    Current Element :string
    Order number: 6540321
    
    Current Element :string
    Order number: 6540322
    
    Current Element :string
    Order number: 6540323
    
    Current Element :string
    Order number: 6540324
    
    Current Element :string
    Order number: 6540325
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用.getTextContent()

      另见:Getting XML Node text value with Java DOM

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-08
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-11
        • 1970-01-01
        相关资源
        最近更新 更多