簡體   English   中英

從Web讀取xml

[英]Reading xml from web

我正在從特定的網址讀取xml。 但是我收到這個錯誤

[致命錯誤]:3:24:與元素類型“ META”相關聯的屬性“ http-equiv”應使用開放式報價。

xml缺少編碼UTF-8的編碼,我添加了它,但仍然收到此錯誤。 幫助將不勝感激。

這是我的代碼:

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

public class crawleycraw {

    public static void main(String[] args) throws IOException, TransformerException, SAXException, ParserConfigurationException {
        // TODO Auto-generated method stub
        String urlString = "http://www.bnb.bg/";
        URL url = new URL(urlString);
        URLConnection conn = url.openConnection();

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(conn.getInputStream());

        TransformerFactory factoryl = TransformerFactory.newInstance();
        Transformer xform = factoryl.newTransformer();

        Transformer transformer = null;
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"no");

        xform.transform(new DOMSource(doc), new StreamResult(System.out));
    }

}

URL http://www.bnb.bg/將返回HTML,而不是XML 因此,當您解析它時,它將引發錯誤,因為它是HTML,而不是XML。

您的代碼還有其他問題,並且已由Srinevu回答

即使使用curl或wget或瀏覽器下載上述URL,將其另存為example.xml,使用任何XML編輯器,您也會看到完全相同的錯誤,這是Java解析器所看到的。

String urlString = "http://www.bnb.bg/";

您的代碼很好,除了將屬性設置為null(transformer)..您可能對從URL獲得的響應有疑問。 在這里,我嘗試使用簡單的xml字符串,它工作正常。

public static void main(String[] args) throws Exception {
        String urlString = "<Customers><Customer Name=\"Test_91\" Code=\"91\"/><Customer Name=\"Test_92\" Code=\"92\"/></Customers>";
        // URL url = new URL(urlString);
        // URLConnection conn = url.openConnection();
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new ByteArrayInputStream(urlString.getBytes()));
        TransformerFactory factoryl = TransformerFactory.newInstance();
        Transformer xform = factoryl.newTransformer();
        // Transformer transformer = null;
        xform.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
        xform.transform(new DOMSource(doc), new StreamResult(System.out));
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM