「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 );
}
}