论坛首页 Java企业应用论坛

Java基础 XML的生成

浏览 2984 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-24   最后修改:2009-07-06
OO

有的时候我们在写WEB应用的时候,想输出某种格式的XML

 下面就介绍文本的XML的生成

 

XML的文本生成,关键点还是数据结构的构造

有了基本的结构,我们就可以建造自己想要的东西:

 

//用于构造xml数据的载体
 private StringBuffer sb;

    //Stack结构,方便domcument节点数据的的先进后出原则设计

     private Stack<String> stack;
   
 //用于属性节点的数据结构 :java.util.HashMap

//因为属性 都是 key - Value的形式 ,所以用Map或者Hashtable
 public HashMap<String, String> getAttributes() {
    return new HashMap<String, String>();
 }

 

下面就是 一些生成方法

    //初始化xml头部
	public XMLWriterDemo() {
		sb = new StringBuffer();
		stack = new Stack<String>();
		sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
	}
    //开始无属性的节点
	public void startElement(String s) {
		sb.append('<');
		sb.append(s);
		stack.push(s);
		sb.append(">\n");
	}
    //开始有属性的节点
	public void startElement(String s, HashMap<String, String> attr) {
		if (attr == null) {
			startElement(s);
			return;
		}
		sb.append("<");
		sb.append(s);
		stack.push(s);
		Set<Entry<String, String>> set = attr.entrySet();
		Iterator<Entry<String, String>> item = set.iterator();
		Entry<String, String> entry = null;
		while (item.hasNext()) {
			entry = item.next();
			String key = entry.getKey();
			String val = entry.getValue();
			sb.append(' ');
			sb.append(key);
			sb.append("=\"");
			sb.append(val);
			sb.append('"');
		}
		sb.append('>');
		sb.append("\n");
	}
    
	//结束节点
	public void endElement() {
		if (stack.isEmpty())
			return;
		String s = stack.pop();
		sb.append("</");
		sb.append(s);
		sb.append('>');
		sb.append("\n");
	}

	//添加内容节点
	public void writeElement(String elem, String cdata) {
		startElement(elem );
		if (cdata == null)
			sb.append("");
		else if (cdata.isEmpty())
			sb.append("");
		else
			sb.append(cdata+"\n");
		endElement();
	}

	public void writeElement(String elem, int val) {
		startElement(elem);
		sb.append(Integer.toString(val));
		endElement();
	}

	public void writeElement(String elem, long val) {
		startElement(elem);
		sb.append(Long.toString(val));
		endElement();
	}

	public void writeElement(String elem) {
		sb.append('<');
		sb.append(elem);
		sb.append("/> \n");
	}

	public void output() {
		System.out.println(sb.toString());
	}

 

 

以上代码仅供参考,如果有不对的地方希望大家指点

附源码:

   发表时间:2010-06-10  
如何生成XML数据
用XML和来生成动态页面
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics