package it.yup.xml;
// #debug
//@import it.yup.util.Logger;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.xmlpull.v1.XmlSerializer;
public class BSerializer {
// serialize the BElement and all its children
public static byte[] toXml(Element el) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
KXmlSerializer serializer = new KXmlSerializer();
try {
serializer.setOutput(baos, "UTF-8");
write(el, serializer);
serializer.endDocument();
serializer.flush();
} catch (IOException e) {
// #debug
//@ Logger.log("[BElement:toXml] IOException" + e.getMessage());
}
return baos.toByteArray();
}
private static void write(Element el, XmlSerializer serializer) {
try {
serializer.setPrefix("", el.uri);
serializer.startTag(el.uri, el.name);
for (int i = 0; i < el.nattributes; i++) {
serializer.attribute(el.attributes[i][0], el.attributes[i][1],
el.attributes[i][2]);
}
for (int i = 0; i < el.nchildren; i++) {
Object c = el.children[i];
if (c.getClass() == String.class) {
serializer.text((String) c);
} else {
write((Element) c, serializer);
}
}
serializer.endTag(el.uri, el.name);
serializer.flush();
} catch (IllegalArgumentException e) {
// #debug
//@ Logger.log("[BElement::write] IllegalArgumentException:" + e.getMessage());
} catch (IllegalStateException e) {
// #debug
//@ Logger.log("[BElement::write] IllegalStateException: " + e.getMessage());
} catch (IOException e) {
// #debug
//@ Logger.log("[BElement::write] IOException: " + e.getMessage());
}
}
}