JAVA中利用JDOM类库对XML进行简单的包装处理

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

 

你可能感兴趣的:(java,apache,xml,log4j)