使用Java抛出org.xml.sax.SAXParseException解析中文字符; lineNumber:1; columnNumber:1;序言中不能有内容

时间:2017-03-13 08:17:38

标签: java soap xml-parsing inputstream chinese-locale

我有一个XML格式的SoapMesagge,它包含中文字符。

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<new:NewOperation xmlns:new="http://www.example.org/NewWSDLFile/">
    <in>4)  软件应安全、。</in>
</new:NewOperation>
</soapenv:Body>
</soapenv:Envelope>

要解析这个,我在JAVA中编写了下面的代码,其中soapMessage是我的消息

ByteArrayInputStream is = new ByteArrayInputStream(soapMessage.getBytes());
InputStreamReader isr = new InputStreamReader(is,"UTF-8);
InputSource source=new InputSource(isr);
SAXParser parser = new SAXParser();
parser.parse(source);

无法解析中文字符并抛出以下错误,请帮我解决此问题。

Fatal Error] :1:1: Content is not allowed in prolog.
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

我也试过过Dom Parser。

1 个答案:

答案 0 :(得分:0)

您可以查看以下链接,已经提到了一个答案,可以帮助您。

parsing chinese characters in java showing weird behaviour

我认为你的代码在编译时会失败,但也会出现以下错误:

代码:SAXParser parser = new SAXParser();

错误:Cannot instantiate the type SAXParser

因为 SAXParser 是一个无法直接实例化的抽象类:

public abstract class javax.xml.parsers.SAXParser