Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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-8到UTF16解析_Java_Xml_Utf 8_Xml Parsing_Utf 16 - Fatal编程技术网

Java UTF-8到UTF16解析

Java UTF-8到UTF16解析,java,xml,utf-8,xml-parsing,utf-16,Java,Xml,Utf 8,Xml Parsing,Utf 16,我有一个UTF-8的XML,有一些特殊的中文字符,我需要解析这个XML DocumentBuilderFactory factory = DocumentBuilderFactory .newInstance(); factory.setIgnoringElementContentWhitespace(true); factory.setNamespaceAware(true); factory.setValidating(true); //byte[]

我有一个UTF-8的XML,有一些特殊的中文字符,我需要解析这个XML

DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
factory.setIgnoringElementContentWhitespace(true);
factory.setNamespaceAware(true);
factory.setValidating(true);

//byte[] buffer = xmlMsg.getBytes("UTF-16");

logger.info("transformToUTP " + xmlMsg);


//byte[] buffer = soapMessage.getBytes();
//ByteArrayInputStream stream = new ByteArrayInputStream(buffer);               


InputSource is = new InputSource(new ByteArrayInputStream(
                   xmlMsg.getBytes("UTF-16")));

Document doc = factory.newDocumentBuilder().parse(is);
//Document doc = factory.newDocumentBuilder().parse(
                   new InputSource(new StringReader(xmlMsg)));                              

XPath xpath = XPathFactory.newInstance().newXPath();
xpath.setNamespaceContext(getNameSpace());

XPathExpression soapBodyExpr = xpath.compile(BODY_XPATH_EXP);
Node soapBody = (Node) soapBodyExpr.evaluate(doc,
            XPathConstants.NODE);

Node reqMsgNode = soapBody.getFirstChild();

我在reqMsgNode上得到一个空指针异常

不要将xml转换为字符串,按原样解析,使用

DocummentBuilder.parse(文件)
DocumentBuilder.parse(InputStream)


解析器将从xml声明中获取编码,例如
,如果缺少,则默认情况下将使用UTF-8

不要将xml转换为字符串,按原样解析,使用

DocummentBuilder.parse(文件)
DocumentBuilder.parse(InputStream)


解析器将从xml声明中获取编码,例如
,如果缺少编码,则默认情况下将使用UTF-8

为什么要将xml转换为字符串?这是您的第一个问题。为什么要将xml转换为字符串?那是你的第一个问题。