2014-01-20 116 views
-1

我解析java中的xml文件。我得到SEVERE:org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1;序言中不能有內容。例外。如何在java中解析xml文件?

+1

聽起來好像你的XML文件是假的,或者你在使用XML解析器的過程中遇到了錯誤。請向我們展示該文件(或至少一個顯示問題的最小文件)和您的代碼。 –

+0

試試這個:http://stackoverflow.com/questions/4569123/content-is-not-allowed-in-prolog-saxparserexception –

+0

請添加您的錯誤的堆棧跟蹤,並提供錯誤發生的代碼。這裏沒有足夠的信息來處理。 –

回答

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的程序