【发布时间】:2016-12-18 15:56:43
【问题描述】:
你好,我有一个大问题。我必须从 URL/HTTP 解析 XML 文件并在 java 中处理它,但是当我这样做时总是会出现异常。地址没问题,因为它是一家银行的 www。请帮帮我
import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class MainClass {
public static void main(String [] args){
String url = "http://api.nbp.pl/api/exchangerates/rates/c/gbp/2015-01-01/2015-01-31";
try
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL(url).openStream());
doc.getDocumentElement().normalize();
System.out.println ("Root element: " +
doc.getDocumentElement().getNodeName());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
错误:
[致命错误]:1:1:序言中不允许内容。 org.xml.sax.SAXParseException;行号:1;列号:1;内容 在序言中是不允许的。在 com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(未知 来源)在 com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知 来源)在 javax.xml.parsers.DocumentBuilder.parse(未知来源) 在 pl.parser.nbp.MainClass.main(MainClass.java:17)
第二种情况:
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 MainClass {
public static void main(String [] args){
String url = "http://api.nbp.pl/api/exchangerates/rates/a/gbp/2012-01-01/2012-01-31/";
try
{
DocumentBuilderFactory f =
DocumentBuilderFactory.newInstance();
DocumentBuilder b = f.newDocumentBuilder();
Document doc = b.parse(url);
doc.getDocumentElement().normalize();
System.out.println ("Root element: " +
doc.getDocumentElement().getNodeName());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
错误:
[致命错误]:1:1:序言中不允许内容。 org.xml.sax.SAXParseException;系统标识: http://api.nbp.pl/api/exchangerates/rates/a/gbp/2012-01-01/2012-01-31/; 行号:1;列号:1;序言中不能有内容。在 com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(未知 来源)在 com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知 来源)在 javax.xml.parsers.DocumentBuilder.parse(未知来源) 在 pl.parser.nbp.MainClass.main(MainClass.java:19)
【问题讨论】: