Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从web读取xml_Java_Xml - Fatal编程技术网

Java 从web读取xml

Java 从web读取xml,java,xml,Java,Xml,我正在从特定的url读取xml。但我得到了这个错误 [致命错误]:3:24:属性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

我正在从特定的url读取xml。但我得到了这个错误

[致命错误]:3:24:属性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));
    }

}

您的代码很好,除了将属性设置为nulltransformer。。您可能对从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));
    }
网址http://www.bnb.bg/will 返回HTML,而不是XML。因此,当您解析它时,它将抛出错误,因为它是HTML,而不是XML

您的代码还有其他问题,Srinevu也回答了这个问题

即使您使用curl、wget或浏览器下载上述URL,也要保存它 对于example.xml,使用任何xml编辑器,您都会看到完全相同的错误 正在通过Java解析器查看


你可以发布你正在使用的xml文件吗!这是url生成的xml示例:1АССааааааааааAUD 1 0.794755 1.25825 23.05.2018 0感谢您的回复。我试过了,我得到了这个错误[致命错误]:1:1:prolog中不允许内容。是的,我得到了。url也生成xml,但我不知道如何读取它。“我在尝试不同的事情,但仍然不起作用。”泰迪,那么你可能会问不同的问题。下面是一些将XML下载到文件的方法,一旦完成,您就可以应用您的DOM操作/转换逻辑。非常感谢。
String urlString = "http://www.bnb.bg/";