如何使用Java检查编码类型为UTF-16的xml文件的格式良好性?
我解析了一个编码类型为UTF-8的xml文件。它解析得很好 我没有改变xml文件中的任何编码类型 UTF-8的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
<?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好吗?我使用你的代码,工作完美。。。。