Java 从web读取xml
我正在从特定的url读取xml。但我得到了这个错误 [致命错误]:3:24:属性http equiv需要打开引号 与元元素类型关联 xml缺少UTF-8编码,我添加了它,但仍然出现此错误。 非常感谢您的帮助 这是我的代码: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
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/";