次のタイプの XML を SAX で解析しています。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ROOT>
<MESSAGES>
<MESSAGE>
<SUBJECT><![CDATA[Some text]]></SUBJECT>
<BODY><![CDATA[Some text Some Text ]]></BODY>
<RECIPIENTS>
<TO><![CDATA[mail1@domain.com]]></TO>
<TO><![CDATA[mail2@domain2.com]]></TO>
</RECIPIENTS>
</MESSAGE>
<MESSAGE>
<SUBJECT><![CDATA[Some text]]></SUBJECT>
<BODY><![CDATA[Some text1 Some Text2 ]]></BODY>
<RECIPIENTS>
<TO><![CDATA[mail1@domain.com]]></TO>
<TO><![CDATA[mail2@domain2.com]]></TO>
</RECIPIENTS>
</MESSAGE>
<!-- List of 50 MESSAGE ITEM-->
</MESSAGES>
</ROOT>
メソッド文字が呼び出されると、
public void characters(char buf[], int offset, int len) throws SAXException
{
String currentValue = new String(buf, offset, len);
System.out.println(currentValue);
}
一部のメッセージ項目で、誤った値を受け取ります。たとえば、タグ BODY を解析しているときに、'Some text1 Some Text2'を受信する必要があるときに'1 Some Text2'を取得し、印刷しても失われたデータを見つけることができません。このメソッドで受信したすべてのデータをコンソールします。
メッセージ 47 では、常に同じ位置でデータをカットします (他のメッセージでも、常に同じ位置で)。この問題は、キャラクターが一度に 2 回以上呼び出していることが原因である可能性があると思いますが、前に言っておきますが、コンソールにすべてを出力しても、失われたデータが表示されません。
助けてください。
ありがとう