2017-03-13 18 views
0

中国語の文字を含むXML形式のSoapMesaggeがあります。私はSOAPMessageのは、エラーの下に中国の文字や投げを解析することができない私のメッセージJava throwing org.xml.sax.SAXParseExceptionを使用して中国語チャンクを解析する。 lineNumber:1; columnNumber:1;コンテンツはプロローグで許可されていません

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); 

あるJAVAで以下のコードを書いた本を解析するために

<?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> 

は、この問題を解決するために私を助けてください。

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

XMLにBOMがないことを確認してください:https://en.wikipedia.org/wiki/Byte_order_mark。 – Berger

+0

こんにちは私は以下のコード 'String s = soapMessage.replaceFirst("^\ uFEFF "、" ");'を使ってみましたが、この種の文字列。 ' 4)\t ????? ' –

+0

コンソールには' ???? 'がどこにありますか?たぶん、それらの文字を印刷することができません。値を新しいファイルに出力してその内容を調べるか、読み込まれた各文字のint値を出力して、それらが '? '文字でないことを確認してください。 – Berger

答えて

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 
関連する問題