Tôi cố gắng phân tích cú pháp tệp XML bằng trình phân tích cú pháp XML của StAX. Nó cung cấp cho tôi sự kiện START_ELEMENT
và END_DOCUMENT
nhưng không có sự kiện ATTRIBUTE
. Làm cách nào tôi có thể nhận được sự kiện ATTRIBUTE
với trình phân tích cú pháp StAX?Làm cách nào để nắm bắt các sự kiện thuộc tính với trình phân tích cú pháp XML của StAX?
XML của tôi:
<?xml version="1.0" encoding="utf-8"?>
<posts>
<row name="Jonas"/>
<row name="John"/>
</posts>
My Stax XML-phân tích cú pháp:
public class XMLParser {
public void parseFile(String filename) {
XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2.newInstance();
xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE);
xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE);
xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
xmlif.configureForSpeed();
XMLStreamReader2 xmlr = (XMLStreamReader2)
xmlif.createXMLStreamReader(new FileInputStream(filename));
int eventType;
while(xmlr.hasNext()) {
eventType = xmlr.next();
switch(eventType) {
case XMLStreamConstants.START_ELEMENT:
if(xmlr.getName().toString().equals("row")) {
System.out.println("row");
}
break;
case XMLStreamConstants.ATTRIBUTE:
System.out.println("Attribute");
break;
case XMLStreamConstants.END_DOCUMENT:
System.out.println("END");
xmlr.close();
break;
}
}
}
public static void main(String[] args) {
XMLParser p = new XMLParser();
String filename = "data/test.xml";
p.parseFile(filename);
}
}