java xml生成工具_一个轻量的XML生成工具

import java.util.Stack;

import java.util.Vector;

public class StringXmlWriter {

private StringBuilder m_xml;//输出端

private int m_iLevel;//用来处理缩进

private Vector m_attrVect;//存放属性,只存放当前标签的属性, 输出标签后清除

private Stack m_tagStack;//存放标签, 用来自动输出关闭标签

public static void main(String[] args) {

//Example

StringXmlWriter billXml = new StringXmlWriter();

billXml.addComment("示例");

billXml.addAttributes("attr", "ROOT");//在添加标签前, 你可以添加任意个属性

billXml.createTag("Bills");//添加标签

billXml.addAttributes("attr", "单据");

billXml.createTag("Bill");

billXml.addComment("表头");

billXml.createTextTag("pk_corp", "1001");

billXml.createTextTag("pk_billtype", "YXB8");

billXml.addComment("表体");

billXml.createTag("Bodys");

billXml.addAttributes("attr", "第一行");

billXml.createTag("Body");

billXml.createTextTag("pk_corp", "1001");

billXml.closeLastTag();

billXml.addAttributes("attr", "第二行");

billXml.createTag("Body");

billXml.createTextTag("pk_corp", "1002");

billXml.closeLastTag();

billXml.closeAllTags();

System.out.println(billXml);

}

public StringXmlWriter()

{

super();

m_xml = new StringBuilder();

m_attrVect = new Vector();

m_tagStack = new Stack();

String encoding = null;

try{

encoding = "utf-8";

}catch (Exception e) {

}

m_xml.append("<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>");

}

/**

* 添加xml标签, 如果标签有属性, 则必须先添加属性

* @param tag

* @author wuzq

* @date 2014-11-6 下午3:33:48

*/

public void createTag(String tag){

m_xml.append("\n");

for(int i =0;i

m_xml.append("\t");

m_xml.append("

addAttrToTag();

m_xml.append(">");

m_tagStack.push(tag);

m_iLevel++;

}

private void addAttrToTag() {

while(0 < m_attrVect.size()/2){

String attr = m_attrVect.remove(m_attrVect.size()-1);

m_xml.append(" ").append(attr).append("=");

attr = m_attrVect.remove(m_attrVect.size()-1);

m_xml.append("\"").append(attr).append("\"");

}

m_attrVect.clear();

}

/**

* 关闭标签

*

* @author wuzq

* @date 2014-11-6 下午3:38:28

*/

public void closeLastTag(){

m_xml.append("\n");

m_iLevel--;

for(int i=0; i

m_xml.append("\t");

}

m_xml.append("").append(m_tagStack.pop()).append(">");

}

/**

* 关闭所有标签

*

* @author wuzq

* @date 2014-11-6 下午3:49:44

*/

public void closeAllTags(){

while(m_tagStack.size() != 0){

m_xml.append("\n");

m_iLevel--;

for(int i=0;i

m_xml.append("\t");

}

m_xml.append("").append(m_tagStack.pop()).append(">");

}

}

/**

* 添加子标签, 如果子标签有属性, 则必须先添加属性

* @param tag

* @param value

* @author wuzq

* @date 2014-11-6 下午3:50:37

*/

public void createTextTag(String tag, String value){

m_xml.append("\n");

for(int i=0; i

m_xml.append("\t");

}

m_xml.append("

addAttrToTag();

m_xml.append(">").append(value).append("").append(tag).append(">");

}

/**

* 添加属性

* @param key

* @param value

* @author wuzq

* @date 2014-11-6 下午3:56:04

*/

public void addAttributes(String key, String value){

m_attrVect.addElement(value);

m_attrVect.addElement(key);

}

/**

* 添加注释

* @param comment

* @author wuzq

* @date 2014-11-6 下午3:58:48

*/

public void addComment(String comment){

m_xml.append("\n");

for(int i=0; i

m_xml.append("\t");

}

m_xml.append("");

}

@Override

public String toString() {

return m_xml.toString();

}

}

输出:

1001

YXB8

1001

1002

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值