こんにちは、websericesとxml解析は非常に新しいです。http://www.mysamplecode.com/2011/11/android-parse-xml-file-example-using.htmlこのリンクを参照として使用します。しかし、このリンクでは、xmlは単純なものだと思います。このような複雑なxmlを解析するにはどうすればよいですか。これを解析する方法を誰かに提案してもらえますか。各MenuEntryから<A>、<B>、<C>、<D>タグの値を読み取りたい
<Menu>
<MenuEntries>
<MenuEntry>
<A>--AAAAA---</A>
<B>--BBBB---</B>
<MenuEntries/>
<C>--CCCC---</C>
<D>--DDDD---</D>
</MenuEntry>
<MenuEntry>
<B>--BBBB---</B>
<menuEntries/>
<C>--CCCC---</C>
<D>--DDDD---</D>
</MenuEntry>
<MenuEntry>
<A>--AAAAA---</A>
<B>--BBBB---</B>
<MenuEntries>
<MenuEntry>
<A>--AAAAA---</A>
<B>--BBBB---</B>
<MenuEntries/>
<C>--CCCC---</C>
<D>--DDDD---</D>
</MenuEntry>
<MenuEntry>
<A>--AAAAA---</A>
<B>--BBBB---</B>
<MenuEntries/>
<C>--CCCC---</C>
<D>--DDDD---</D>
</MenuEntry>
</MenuEntries>
<C>--CCCC---</C>
<D>--DDDD---</D>
</MenuEntry>
<MenuEntry>
<B>--BBBB---</B>
<MenuEntries/>
<C>--CCCC---</C>
<D>--DDDD---</D>
</MenuEntry>
<MenuEntry>
<A>--AAAAA---</A>
<B>--BBBB---</B>
<MenuEntries>
<MenuEntry>
<A>--AAAAA---</A>
<B>--BBBB---</B>
<MenuEntries/>
<C>--CCCC---</C>
<D>--DDDD---</D>
</MenuEntry>
</MenuEntries>
<C>--CCCC---</C>
<D>--DDDD---</D>
</MenuEntry>
</MenuEntries>
</Menu>
これは、xmlを解析するための私のxmlHandlerクラスです。
public class ItemXMLHandler extends DefaultHandler {
Boolean currentElement = false;
String currentValue = "";
Menu item = null;
static ArrayList<Menu> menuList = new ArrayList<Menu>();
public static ArrayList<Menu> getMenuListz() {
Log.e("in getMenulist()", String.valueOf(menuList.size()));
return menuList;
}
// Called when tag starts
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
currentElement = true;
currentValue = "";
if (localName.equals("MenuEntry")) {
//Log.e("menuENtry found ", "menuENtry found");
item = new Menu();
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
currentElement = false;
/** set value */
if (localName.equalsIgnoreCase("A")) {
item.setA(currentValue);
} else if (localName.equalsIgnoreCase("B")) {
item.setB(Long.parseLong(currentValue));
} else if (localName.equalsIgnoreCase("C")) {
item.setC(currentValue);
} else if (localName.equalsIgnoreCase("menuEntry"))
menuList.add(item);
}
// Called to get tag characters
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if (currentElement) {
currentValue = currentValue + new String(ch, start, length);
}
}
}
これはMenuの私のJavaクラスです
public Class Menu{
private long B;
private String A;
private String C;
public long getB() {
return B;
}
public void setB(long B){
this.B = B;
}
public String getA() {
return A
}
public void setA(String A){
this.A = A
}
public String getC() {
return C
}
public void setC(String C) {
this.C = C;
}
}
重複とnull値を取得しています。コーディングが間違っている可能性があることを知っています。この種の複雑なxml(私にとってはその複雑な:))を解析するための返信や便利なリンクを誰かが助けてくれますか?