package test.base;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
/**
*<p> XML , XML , property ;
* , text ;
* <tag, value> ;</p>
*<p> org.jdom.Document ;
* byte[] 。</p>
*<p> , Document byte[] org.jdom.Document ;
* Document <tag,value>。</p>
* @author wangyi
*
*/
public class XmlDatagram {
/** 。 */
private static final Logger logger =Logger.getLogger(XmlDatagram.class);
/** JDOM 。 */
private Document document;
/**
* 。
* @param messageid
*/
public XmlDatagram() {
document = new Document();
document.setRootElement(new Element("property"));
}
/**
* XML byte[] XmlDatagram 。
* @param array XML byte[] 。
*/
public XmlDatagram(byte[] array) {
ByteArrayInputStream binput =new ByteArrayInputStream(array);
SAXBuilder builder = new SAXBuilder();
try {
this.document= builder.build(binput);
} catch (IOException ex){
logger.error(" byte document IO 。",ex);
} catch (JDOMException ex){
logger.error(" byte document JDOM 。",ex);
}
}
/**
* 。
* @param tag 。
* @param value 。
* @return Element 。
*/
public Element addChild(String tag, String value){
Element element = new Element(tag);
element.setText(value);
document.getRootElement().addContent(element);
return element;
}
/**
* 。
* @param tag 。
* @return 。
*/
public String getChildValue(String tag) {
String value =document.getRootElement().getChildText(tag);
return value;
}
/**
* 。
* @return XML byte[] 。
* @throws IOException
*/
public byte[] toByteArrays() throws IOException{
ByteArrayOutputStream boutput =new ByteArrayOutputStream();
Format format =Format.getCompactFormat();
format.setEncoding("UTF-8");
XMLOutputter xmlOutput = new XMLOutputter(format);
xmlOutput.output(this.document,boutput);
return boutput.toByteArray();
}
}