SAX(javax.xml.parsers.SAXParser)を使用してさまざまな場所に関する情報を含むXMLファイルを解析して、これらの場所を次のように表示できるAndroidアプリケーションを作成します。マップ上のポイント。残念ながら私はパーサに問題があります。私のXMLハンドラは、現在の要素の名前があると、関連するその要素の値を追加するかを確認するチェックし明らかにランダムなSAX出力エラー
<Placemark id="00001">
<name>Place name</name>
<address>Place address</address>
<ExtendedData>
<Data name="postcode">
<value>Place postcode</value>
</Data>
</ExtendedData>
<Point>
<coordinates>-0.000000,51.000000</coordinates>
</Point>
</Placemark>
:
XMLファイルは、次のようになり1000以上の繰り返しのグループで構成されていリストは、すなわち
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(localName.equals("placemark")) list.setPlaceID(attributes.getValue("id"));
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if(localName.equals("name")) list.setName(currentValue);
else if(localName.equals("address")) list.setAddress(currentValue);
else if(localName.equals("value")) list.setPostCode(currentValue);
else if(localName.equals("coordinates")) System.out.println(currentValue);
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException{
currentValue = new String(ch, start, length);
}
これが成功した例99.9%を処理しますが、何らかの理由で私はいくつかの特定のXMLは、例えば、解析されたときに予期しない出力を生成する座標要素がある把握することはできません。
<coordinates>-0.328459,51.604121</coordinates>
4121
なく-0.328459,51.604121
<coordinates>-0.060226,51.602341</coordinates>
を生成する問題の要素が分離されている場合、それらは問題なく解析することができ、さらに紛らわしい26,51.602341
なく-0.060226,51.602341
を生成します。非常に大きな数が解析された場合にのみ、この問題が発生します。
これらの結果を説明する明確な説明はありますか?
参照http://stackoverflow.com/questions/8461723/xml-node-text-is-causing-issues-when-it-has-funny-characters/8676370#8676370 –
ワンダフル!これは完全に機能し、私はもはや予期せぬ出力を受け取っていません。ご助力ありがとうございます! – Wolvern
お手伝いします!文字列連結の代わりにStringBuilder.appendを使用します。これにより、パフォーマンスが向上する場合があり、これがベストプラクティスです。 –