我想使用“SAXParser”将任何 XML 文件解析为“XMLNode”类的对象列表
XMLNode 类
public class XMLNode {
private String nodeName;
private String nodeValue;
private List<XMLNodeAttribute> attributes;
private boolean isParentNode;
private List<XMLNode> childNodes;
//.... getters and setters ....
}
XMLNodeAttribute 类
public class XMLNodeAttribute {
private String name;
private String value;
//.... getters and setters ....
}
请帮助我编写可以将输入作为 XML 文件并输出列表的解析器类。
先感谢您。
我可以写一些代码..
public class XmlProcesser extends DefaultHandler {
XMLResponse xmlResponse = null;
List<XMLNode> resplist = new ArrayList();
List<XMLNode> temp = new ArrayList();
boolean endtag = false;
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
String elementName = localName;
if ("".equals(elementName)) {
elementName = qName;
}
System.out.println(" Start Ele - " + elementName );
//Each attribute
if (elementName!=null) {
if (attributes!=null) {
for (int pos=0; pos<attributes.getLength(); pos++) {
String name = attributes.getLocalName(pos)==null || attributes.getLocalName(pos).trim().length()==0 ? attributes.getQName(pos) : attributes.getLocalName(pos);
String value= attributes.getValue(pos);
System.out.println(" name - " + name + " value - " + value );
}
}
}
}
@Override
public void characters(char ch[], int start, int length) throws SAXException {
String s = new String(ch, start, length);
System.out.println(" value - " + s );
endtag = false;
}
@Override
public void endElement(String uri, String localName,
String qName) throws SAXException {
endtag = true;
String elementName = localName;
if ("".equals(elementName)) {
elementName = qName;
}
System.out.println(" End Ele - " + elementName );
}
}