XML格式化输出到文件
来源:互联网 发布:app软件如何制作 编辑:程序博客网 时间:2024/05/17 05:12
XML格式化输出到文件
最近公司有个项目:是用xml来存储配置信息的,在系统启动时,加载配置xml配置,系统运行结束后
将配置信息保存回xml文件(运行过程中,某些信息被修改了)。
关于xml数据的读取以及解析,由于java自带的类库中,提供了强大的API,我轻松的就实现了这部份功能:
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document d = builder.parse(new File(filename));
Document d = builder.parse(new File(filename));
但是当要将Document写回到文件时,问题来了,起初我使用以下方法来将数据写回到文件:
DOMSource src = new DOMSource(d);
StreamResult result = new StreamResult(new File(filename));
Transformer t = TransformerFactory.newInstance().newTransformer();
t.transform(src, result);
StreamResult result = new StreamResult(new File(filename));
Transformer t = TransformerFactory.newInstance().newTransformer();
t.transform(src, result);
但是当我打开覆写后的xml文件,发现所有的信息都写在一行里了,好像是一个长长的字符串。
我想,这样不行了,这样子怎么进行人工维护啊,如果每次人工维护时,都要先手动将xml文件
换行,排版成像IE输出的那样子,那非得累死不可。于是,就开始上网找,想找个现成的,
google,baidu,csdn,可半天下来,一无所获。
得!还是得自已动手。哈哈,半个小时后事情搞定了。
原码如下:(我的xml文件里没有Node Value,所以这里没有这部份内容)
static int len = -4;
public void write(Document d, String fileName) throws IOException
...{
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
//写入xml头
buffer.write("<?xml version="1.0" encoding="UTF-8" ?> ".getBytes());
Element e = d.getDocumentElement();
writeNode(e,buffer); //写入xml节点
//从缓冲到文件
FileOutputStream out = new FileOutputStream(new File(fileName));
buffer.writeTo(out);
buffer.flush();
}
...{
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
//写入xml头
buffer.write("<?xml version="1.0" encoding="UTF-8" ?> ".getBytes());
Element e = d.getDocumentElement();
writeNode(e,buffer); //写入xml节点
//从缓冲到文件
FileOutputStream out = new FileOutputStream(new File(fileName));
buffer.writeTo(out);
buffer.flush();
}
以下是 writeNode()方法:
public void writeNode(Element e, OutputStream buffer) throws IOException
...{
StringBuffer outStr = new StringBuffer();
len +=4; //Element前先输出len个空格,排版
for(int i = 0; i < len; i++ )
...{
outStr.append(" ");
}
outStr.append("<");
outStr.append(e.getNodeName()+" ");
//写入元素属性 name="value"
NamedNodeMap map = e.getAttributes();
for (int j = 0; j < map.getLength(); j++)
...{
Attr at = (Attr) map.item(j);
outStr.append(at.getName() + "="" + at.getValue()+""");
outStr.append(" ");
}
//写入子节点
if(e.hasChildNodes())
...{
outStr.append("> ");
buffer.write(outStr.toString().getBytes());
NodeList l = e.getChildNodes();
for (int i = 0; i < l.getLength(); i++)
...{
if (l.item(i).getNodeType() == Node.ELEMENT_NODE)
...{
Element ele = (Element) l.item(i);
writeNode(ele, buffer); //小小的使用了递归技术
}
}
outStr = new StringBuffer();
for(int i = 0; i < len; i++ )
...{
outStr.append(" ");
}
outStr.append("</"+e.getNodeName()+"> ");
buffer.write(outStr.toString().getBytes());
}
else
...{
//是叶子节点
outStr.append("/> ");
buffer.write(outStr.toString().getBytes());
}
len -=4;
}
...{
StringBuffer outStr = new StringBuffer();
len +=4; //Element前先输出len个空格,排版
for(int i = 0; i < len; i++ )
...{
outStr.append(" ");
}
outStr.append("<");
outStr.append(e.getNodeName()+" ");
//写入元素属性 name="value"
NamedNodeMap map = e.getAttributes();
for (int j = 0; j < map.getLength(); j++)
...{
Attr at = (Attr) map.item(j);
outStr.append(at.getName() + "="" + at.getValue()+""");
outStr.append(" ");
}
//写入子节点
if(e.hasChildNodes())
...{
outStr.append("> ");
buffer.write(outStr.toString().getBytes());
NodeList l = e.getChildNodes();
for (int i = 0; i < l.getLength(); i++)
...{
if (l.item(i).getNodeType() == Node.ELEMENT_NODE)
...{
Element ele = (Element) l.item(i);
writeNode(ele, buffer); //小小的使用了递归技术
}
}
outStr = new StringBuffer();
for(int i = 0; i < len; i++ )
...{
outStr.append(" ");
}
outStr.append("</"+e.getNodeName()+"> ");
buffer.write(outStr.toString().getBytes());
}
else
...{
//是叶子节点
outStr.append("/> ");
buffer.write(outStr.toString().getBytes());
}
len -=4;
}
-----------------------------------------------------------------------------------------------------------------
http://shop33871860.taobao.com/
QQ: 780023319
旺旺: xichu_coa
- XML格式化输出到文件
- 从SQL存储过程格式化输出到xml文件
- Java 格式化输出到文件
- dom4j输出格式化的xml文件
- python:print格式化输出到文件
- 格式化XML输出
- C# 格式化输出XML
- java xml格式化输出
- java xml格式化输出
- xml 格式化输出
- Java格式化XML输出
- XML字符串格式化输出
- C++ 读写文件,格式化输出到文件的简单代码
- 使用XmlBeans输出格式化xml文件,带有换行缩进
- SAP XML输出文件保存到本地
- SAP XML输出文件保存到本地
- 将树输出到XML文件
- 从CEdit控件到文件的格式化输出方法
- 构建安全的 Web Services
- 如何使用DOS命令判断磁盘分区是否为NTFS格式
- 勇敢说:「要求加薪」,不必低声下气(下)
- GHOST的用法件
- 海盗抢宝石
- XML格式化输出到文件
- 后台撰写、编辑文章操作技巧
- 两类经典的软件测试方法和测试心态
- 总结Exchange同步事件与异步事件
- 关于连接查询的一些看法
- 软件测试的几个基本的概念
- 对于ASP.NET页面生命周期的认识
- [数据结构]自己推导的任意完全K叉树的一些公式
- 对于ASP.NET页面生命周期的认识