0
的多個變量的值我有這個輸入XML:Java的SAX解析的DefaultHandler get標記與具有相同名稱
<REQUEST>
<ELEMENT>element inside request</ELEMENT>
<NUMBER>250</NUMBER>
<LIST>
<ELEMENT>element inside list</ELEMENT>
<LETTER>A</LETTER>
</LIST>
<OTHER1>other 1</OTHER1>
</REQUEST>
我在,我用它來獲取值的一類擴展的DefaultHandler
。
這是我的課:
public class MyHandler extends DefaultHandler {
private String elementName = null;
private boolean bElement = false;
private String element = null;
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if (bElement){
elementName = new String(ch, start, length);
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if("ELEMENT".equalsIgnoreCase(qName) && elementName == null){
element = elementName;
}
bElement = false;
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(qName.equalsIgnoreCase("ELEMENT")){
bElement = true;
}
}
public String getElement() {
return this.element;
}
}
而且我有這樣的邏輯,以獲得元素值(請求是HttpServletRequest的):
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n = 0;
while ((n = request.getInputStream().read(buf)) >= 0) {
baos.write(buf, 0, n);
}
byte[] content = baos.toByteArray();
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
MyHandler handler = new MyHandler();
saxParser.parse(new ByteArrayInputStream(content), handler);
return handler.getElement();
當我把上面的XML,我們得到的REQUEST-> LIST-> ELEMENT,所以我得到字符串:
元素裏面名單
但我想第一元標籤內要求
元素中的字符串
我需要完成MyHandler的類的代碼得到什麼ELEMENT內部值請求 - >元素並且沒有得到另一個ELEMENT。