Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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检查编码类型为UTF-16的xml文件的格式良好性?_Java_Xml - Fatal编程技术网

如何使用Java检查编码类型为UTF-16的xml文件的格式良好性?

如何使用Java检查编码类型为UTF-16的xml文件的格式良好性?,java,xml,Java,Xml,我解析了一个编码类型为UTF-8的xml文件。它解析得很好 我没有改变xml文件中的任何编码类型 UTF-8的xml头如下所示: <?xml version="1.0" encoding="UTF-16"?> 以上格式没有错误 假设我有另一个文件要检查格式是否良好,它的标题如下: <?xml version="1.0" encoding="UTF-16"?> 如何解决此错误?Java xml解析器通常接收封装在InputSource对象中的输入。这可以用一个R

我解析了一个编码类型为UTF-8的xml文件。它解析得很好

我没有改变xml文件中的任何编码类型

UTF-8的xml头如下所示:

<?xml version="1.0" encoding="UTF-16"?>

以上格式没有错误

假设我有另一个文件要检查格式是否良好,它的标题如下:

<?xml version="1.0" encoding="UTF-16"?>


如何解决此错误?

Java xml解析器通常接收封装在InputSource对象中的输入。这可以用一个Reader参数构造,该参数对给定的字符集进行字符解码

InputStream in = ...
InputSource is = new InputSource(new InputStreamReader(in, "utf-16"));

对于“utf-16”字符集,流应该以字节顺序标记开始,如果不是这样,请使用“utf-16le”或“utf-16be”。

我使用了此格式。但它没有使用,bcoz即使显示相同的错误。可以提供一些代码块来解析xml文件吗?为什么不让xml解析器自己进行验证,包括检测编码?只需传递流,而不是reader.documentBuilderFactory=documentBuilderFactory.newInstance();documentBuilderFactory.setValidating(false);documentBuilderFactory.setNamespaceAware(true);documentBuilderFactory.setIgnoringElementContentWhitespace(true);DocumentBuilder DocumentBuilder=documentBuilderFactory.newDocumentBuilder();setErrorHandler(新的SimpleErrorHandler());InputStream InputStream=新文件InputStream(xmlFile);InputSource InputSource=新的InputSource(新的InputStreamReader(inputStream,“utf-16”));解析(inputSource);我使用了上面的代码,因此该错误是作为序言中不允许的内容出现的。我得到的错误是:org.xml.sax.saxpasseeption;行号:1;栏目号:40;prolog中不允许包含内容。com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:254)com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)出现什么错误?您没有告诉我们您遇到了什么错误,也没有显示失败的代码。您确定您的UTF-16具有正确的BOM表吗?请粘贴XML好吗?我使用你的代码,工作完美。。。。