XMLReaderを備えたSAXParserがあります。
SAXParserFactory saxPF = SAXParserFactory.newInstance();
SAXParser sp = saxPF .newSAXParser();
XMLReader xmlR = sp.getXMLReader();
MyHandler myHandler = new MyHandler();
xmlR .setContentHandler(myHandler );
私のハンドラーコードは、startElementとendElementを使用して、タグ内にあることを検出します。これは、ブール値を設定し、characters()を使用して値を取得することによって行われます。
public void startElement(String namespaceURI,
String localName, String qName, Attributes atts) throws SAXException {
if (localName.equals("myTag")) this.in_myTag = true;
}
public void characters(char ch[], int start, int length) {
if(in_myTag ) { c.setMyTag(new String(ch, start, length));
}
問題は、「A&B Value」というタグがあり、「A」と「&」、「B」と「Value」のcharacters()に通知していることです。したがって、setMyTagの最終的な値は「Value」です。
<myTag>A & B value</myTag>
http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html