package it.yup.xml;
import java.io.IOException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
public class KXmlProcessor {
public static Element parseDocument(XmlPullParser parser) throws XmlPullParserException, IOException {
//BElement el = new BElement();
parser.require(XmlPullParser.START_DOCUMENT, null, null);
parser.nextToken();
return _parse(parser);
}
public static Element pullElement(XmlPullParser parser) throws XmlPullParserException, IOException {
return _parse(parser);
}
public static Element pullDocumentStart(XmlPullParser parser) throws XmlPullParserException, IOException {
Element el = new Element(parser.getNamespace(), parser.getName());
el.attributes = new String[parser.getAttributeCount()][2];
el.nattributes = el.attributes.length;
for(int i = 0; i<parser.getAttributeCount(); i++) {
el.attributes[i][0] = parser.getAttributeName(i);
el.attributes[i][1] = parser.getAttributeValue(i);
}
return el;
}
private static Element _parse(XmlPullParser parser) throws XmlPullParserException, IOException {
Element el = new Element(parser.getNamespace(), parser.getName());
el.attributes = new String[parser.getAttributeCount()][3];
el.nattributes = el.attributes.length;
for(int i = 0; i<parser.getAttributeCount(); i++) {
el.attributes[i][0] = parser.getAttributeNamespace(i);
el.attributes[i][1] = parser.getAttributeName(i);
el.attributes[i][2] = parser.getAttributeValue(i);
}
boolean finished = false;
do {
int type = parser.nextToken();
switch(type) {
case XmlPullParser.START_TAG:
el.addElement(_parse(parser));
break;
case XmlPullParser.END_TAG:
finished = true;
break;
case XmlPullParser.COMMENT:
break;
default:
if(parser.getText()!=null) {
el.addText(parser.getText());
}
}
} while(!finished);
return el;
}
}