【问题标题】:How to parse xml file in java?如何在java中解析xml文件?
【发布时间】:2014-01-20 09:03:41
【问题描述】:

我正在用 java 解析 xml 文件。我越来越严重:org.xml.sax.SAXParseException;行号:1;列号:1;序言中不能有内容。例外。

【问题讨论】:

  • 听起来您的 XML 文件是伪造的,或者您在使用 XML 解析器时遇到了错误。请向我们展示文件(或至少一个演示问题的最小文件)和您的代码。
  • 请添加错误的堆栈跟踪并提供发生错误的代码。这里几乎没有足够的信息可供使用。
  • 听起来xml文件中的prolog有问题。如果您需要帮助,也许您应该发布 xml 文件的序言?也许还有调用 parse() 方法的 java 代码。

标签: java xml


【解决方案1】:

这是 xml 文件 Stocks.xml,其中包含一些股票以及价格、数量,我们将在 Java 中的 xml 解析示例中使用它。

<?xml version="1.0" encoding="UTF-8"?>
    <stocks>
           <stock>
                  <symbol>Citibank</symbol>
                  <price>100</price>
                  <quantity>1000</quantity>
           </stock>
           <stock>
                  <symbol>Axis bank</symbol>
                  <price>90</price>
                  <quantity>2000</quantity>
           </stock>
    </stocks>

这是一个使用 DOM 解析器在 Java 中解析上述 xml 文件的代码示例:

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

public class DOMExampleJava {

public static void main(String args[]) {
try {

File stocks = new File("Stocks.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(stocks);
doc.getDocumentElement().normalize();

System.out.println("root of xml file" + doc.getDocumentElement().getNodeName());
NodeList nodes = doc.getElementsByTagName("stock");
System.out.println("==========================");

for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);

if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
System.out.println("Stock Symbol: " + getValue("symbol", element));
System.out.println("Stock Price: " + getValue("price", element));
System.out.println("Stock Quantity: " + getValue("quantity", element));
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}

private static String getValue(String tag, Element element) {
NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node) nodes.item(0);
return node.getNodeValue();
}

}

 Output:

root of xml file stocks
==========================
Stock Symbol: Citibank
Stock Price: 100
Stock Quantity: 1000
Stock Symbol: Axis bank
Stock Price: 90
Stock Quantity: 2000

这是使用Java解析Xml的过程

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 2017-07-27
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2012-08-26
    相关资源
    最近更新 更多