`
v5browser
  • 浏览: 1140866 次
社区版块
存档分类
最新评论

一个最最简单的xml sax writer.

 
阅读更多

JAVA 的xml包不少,可就没找到一个包提供了SAX writer的功能,正好需要按照SAX方式输出xml文件,所以自己写了一个,包含注释大约100行,使用起来也颇为简单。
/*
* Created on 2005-1-29
*
* Mininal sax writer. you can use it like that:
* XmlWriter.startDocument();
* ...
* XmlWriter.startElement("Book");
* XmlWriter.addAttribute("title","book title");
* XmlWriter.addAttribute("price","$100");
* XmlWriter.character("This is a good book");
* XmlWriter.endElement("Book");
* ...
* XmlWriter.endDocument();
*/
package com.dyz.xfe;

import java.io.*;

public class XmlWriter{

private BufferedWriter writer = null;
private StringBuffer buffer = new StringBuffer();
private boolean isRoot = true;
private boolean closed = false;

public XmlWriter(String filename)
{
try {
writer = new BufferedWriter( new FileWriter(filename) );
} catch (IOException e) {
e.printStackTrace();
}
}

public void startDocument()
{
try {
writer.write("<?xml version=/"1.0/"?>");
} catch (IOException e) {
e.printStackTrace();
}
}

public void endDocument()
{
try {
if( buffer.length() > 0 )
writer.write(buffer.toString());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public void startElement(String elem)
{
if( isRoot )
isRoot = false;
else
{
if( !closed )
buffer.append(">");
}
if( buffer.length() > 4096 )
{
try {
writer.write(buffer.toString());
} catch (IOException e) {
e.printStackTrace();
}
buffer.delete(0,buffer.length());
}
buffer.append("<" + elem);
closed = false;
}

public void endElement(String elem)
{
if( !closed )
buffer.append(">");
buffer.append("</" + elem + ">");
closed = true;
}

/**
* Output a xml attribute.
* @param name attribute name.
* @param value attribute value.
*/
public void addAttribute(String name, String value)
{
buffer.append( " " + name + "=/"" + value + "/"" );
}

/**
* Output a text node.
* @param value
*/
public void character(String value)
{
if( !closed )
buffer.append(">");
buffer.append(value);
closed = true;
}
}

其实还可以做进一步优化,不过对于一些简单的需求完全足够,只是不明白JAXP就不提供?

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics