从Java中的URL解析XML

加济克

你好,我有一个大问题。我必须从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; lineNumber:1;columnNumber:1;序言中不能有内容。在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知来源)在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知来源)在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(未知源) .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; systemId:http : //api.nbp.pl/api/exchangerates/rates/a/gbp/2012-01-01/2012-01-31/ ; lineNumber:1;columnNumber:1;序言中不能有内容。在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知来源)在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知来源)在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(未知源) .DocumentBuilder.parse(未知源),位于pl.parser.nbp.MainClass.main(MainClass.java:19)

Vempo

默认情况下,URL以JSON格式返回数据。您会在浏览器中看到XML,因为浏览器协商返回类型的方式(通过Accept标头)。

您可以将数据解析为JSON,也可以将URL更改为http://api.nbp.pl/api/exchangerates/rates/c/gbp/2015-01-01/2015-01-31?format=xml

最后注意?format=xml

请参阅《用户手册》

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章