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就不提供?
分享到:
相关推荐
NULL 博文链接:https://wilian.iteye.com/blog/1992365
SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件
sax.jar sax.jar sax.jar sax.jar sax.jar sax.jar sax.jar
xml sax解析
解析XML所需的jar sax.jar
在文档内每一XML元素接受解析的前后触发元素事件。 任何元数据通常都由单独的事件交付。 在处理文档的DTD或Schema时产生DTD或Schema事件。 产生错误事件用来通知主机应用程序解析错误。
使用Sax解析XML,演示了如何使用SAX接口来解析xml,有主要方法的介绍。
Ø “文档对象模型”方式,解析完的Xml将生成一个树状结构的对象。 Ø 2、SAX(org.xml.sax) Ø SimpleAPI for XML,以事件的形式通知程序,对Xml进行解析。 Ø 3、XMLPULL(org.xmlpull.v1) Ø 类似于SAX方式,程序以...
27.使用SAX解析XML.rar 27.使用SAX解析XML.rar 27.使用SAX解析XML.rar android coolszy
本程序使用XML的SAX(Simple API for XML)机制,实现了读取XML文档内容的功能,
一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml文件的实例
使用java语言对XML文档进行解析的示例,包括DOM,SAX方式,并包括使用jdom和jom4j框架进行XML解析或生成XML文档
DOM 解析 基本操作 SAX 解析 基本操作 上学期XML的一个小作业,都是一些基本操作,刚学XML的同学们拿来玩玩
java操作xml,包括dom、sax解析
解析XML所需的jar dom.jar dom4j-1.6.1.jar dom4j-2.0.2.jar dom4j-2.1.1.jar sax-2.0.1.jar jdom-2.0.6.jar 注意:dom4j-2.1.1.jar需要jdk8
如果你只想读取并显示整个XML文档,那么SAX是很好的选择,因为它提供了比DOM更简单的接口,并且它不需要将整个XML文档一次性读入内存,这样便可以用来读取较大的文件 SAX只能读取,不能写入 博文链接:...
Android 创建与解析XML Sax方式
这是java解析xml所必须的jar包,包括dom.jar dom4j.jar sax.jar jdom.jar jaxen.jar(xpath必须包).
SAX的jar包 SAX的jar包SAX的jar包 SAX的jar包 SAX的jar包