我尝试使用 StAX XML 解析器解析 XML 文件。它给我START_ELEMENT
and END_DOCUMENT
事件但没有ATTRIBUTE
事件。我怎样才能收到ATTRIBUTE
使用 StAX 解析器的事件?
My XML:
<?xml version="1.0" encoding="utf-8"?>
<posts>
<row name="Jonas"/>
<row name="John"/>
</posts>
我的 StAX XML 解析器:
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);
}
}
进入后即可获取属性START_ELEMENT
状态。请参阅getAttribute*
上的方法XMLStreamReader
:
- http://download.oracle.com/javase/6/docs/api/javax/xml/stream/XMLStreamReader.html#getAttributeValue%28java.lang.String,%20java.lang.String%29 http://download.oracle.com/javase/6/docs/api/javax/xml/stream/XMLStreamReader.html#getAttributeValue%28java.lang.String,%20java.lang.String%29
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)