XML的保存
将 XML 持久化存储到文件中去
1. 使用 DOM 和 JDOM 之类的 API 将 XML 数据结构直接写入文件
2. 使用 Transformation API
for XML (TrAX) 和标识转换(identity transformation)持久化存储您的 XML
3. 使用 JAXB 之类的较高级别的 API 处理持久化存储
直接使用 API
如果使用一个或多个 API 读取 XML,那么很明显的一个方法就是使用与之相
同的 API 将 XML 写入文件。比如说,如果您使用 JDOM API 和一个 JDOM Document 对象操作 XML,那么可以编写以下代码:
XMLOutputter outputter = new XMLOutputter();
outputter.setFormat(Format.getPrettyFormat());
outputter.output(myDocument, new FileWriter
("outputFile.xml"));
与此类似,在 DOM Level 3 中可以使用新的 Load 和 Save API:
DOMWriter writer = new org.apache.xml.serialize.XMLSerializer();
writer.setNewLine("\r\n");
writer.setEncoding("UTF-8");
writer.writeNode(new FileOutputStream(new File("outputFile.xml")),
myDocument);
注意,使用新 DOM API 的方法多种多样,其中有一些具有较低的供应商独立
性。上面的示例代码中含有一个特定于 Xerces 的类,但是其他方法不会像它一
样与某个特定的供应商类紧密绑定在一起。从学习的角度来说,那些方法都不够
直观,因此我保留了特定于供应商的代码。
转换格式
另一个流行的选择是使用 TrAX 和标识转换。TrAX 是 Transformation API for XML 的缩写,它现在是 JAXP 的一部分,而 Java 平台的每一个发行版中都 含有 JAXP(除了 Micro
Edition)。TrAX 允许您使用 XSL 样式表对 XML 进行
转换。由于 XML 经常需要结合 SAX 和 DOM 一起使用,因此 TrAX 可以接收
SAX 事件和 DOM Document 作为输入,并能够轻易地产生输出文件。此外,TrAX 还可以轻松地对这些格式进行相互转换。比如说,您可以使用以 DOM 表示的 XML 文档作为输入,并对它进行转换,然后再将输出发送到文件中。或者您也可
以读取文件中的内容,并对它进行转换操作,然后再将结果文档存储到 DOM Document 中。
这种方法的另外一个作用是,您可以使用一个不含任何文档操作的样式表,
并使用某种格式作为输入,然后将这种格式输出为任意其他的格式。使用不具转
换功能的样式表 — 实际上指不执行任何操作但回转所接收的输入内容的样式表 — 称作 标识转换(identity
transformation)。因此您可以从文件中获得文
档,然后应用标识转换,最终在 DOM Document 中生成相同的 XML。如果您采用
相反的方式 — 从 DOM 到文件 — 那么实际上可以实现持久化存储 XML。这种 方法类似于以下过程:
Source domSource = new DOMSource(myDOMDocument);
Result fileResult = new StreamResult(new File
("outputFile.xml"));
TransformerFactory factory = TransformerFactory.newInstance
();
Transformer transformer = factory.newTransformer();
transformer.transform(domSource, fileResult);
此处,DOM 文档中的 XML 最终转换为了一个 outputFile.xml 文件。
使用数据绑定实现持久化存储
将 XML 转换为静态格式的另一种方法
— 特别是您希望这种格式是位于磁盘 上的文件 — 是使用 JAXB 之类的数据绑定 API。虽然通常人们不会考虑使用数 据绑定来实现持久化存储,但是它可以有效地实现:读取内存中表示的 XML 文
档并将其写入文件。
我没有太多时间详细介绍数据绑定的概念(您可以在 developerWorks 网站
上阅读一些这方面的文章);下面这段简短的代码使用了 JAXB 方式的数据绑定
实现持久性存储:
FileOutputStream stream = new FileOutputStream
("outputFile.xml");
Marshaller marshaller = myJaxbContext.createMarshaller();
marshaller.marshal(myJavaObject, stream);
您可以设置一些选项,比如说输出文件的编写,所有设置都在 Marshaller 对象中。事实上,JAXB 在设置输出属性方面的灵活性与前面两种方法是不相上
下的。
分享到:
相关推荐
Qt绘制各种图形并且保存为XML Qt绘制各种图形并且保存为XML Qt绘制各种图形并且保存为XML
把图片保存成XML文件以及反向操作的例子
读取和保存成XML的C++代码,里面有保存后的结果manifest.xml。需要的朋友可以看下。
TreeView 结点 保存XML。免费的。。大家可以看看
Qt读写Xml文件;QTreeWidget加载显示Xml文件内容;QTreeWidget项导出保存为Xml;QTreeWidget项实现可拖动
可以保存所有界面上的控件数据,包括EDIT LISTCONTRL BUTTON之类的数据.比如标题,选中状态之类的到XML.再从XML加载到控件.通过遍历的方法.一劳永逸
关于Delphi7读取保存XML 读取XML,修改节点,保存XML的一个完整实例。
功能:创建XML文件的根节点 参数:[in] sName 根节点的节点名 返回:true创建成功 false创建失败 **************************************/ bool CreateRootNode(CString sName); /************************...
QT读取xml文件将所有节点保存到treewidget中
操作xml文件(创建、修改、保存等编辑操作)
通过socket编程方法获取xml文件内容,保存本地文件并解析
XML文件保存到本地,并进行解析,保存路劲自定义配置。
调试环境vs2005 关于vb.net的xml创建,修改,读取全部子节点,读取全部,全部本人亲自调试。有需要的可以下下来看看
delphi 如何使用XML保存查询结果,对初学者帮助很大的,
用c#程序将XML文档保存到指定的文件的代码
利用pugixml 转化xml为string
单页表单提交,数据保存到xml文件里
当保存东西要用xml保存的时候xml不覆盖的保存
在java.beans包中,有两个好东西,XMLEncoder和XMLDecoder。从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。本文介绍了这两个可以把JAVA对象序列化保存为XML文件的工具类。
C#TreeView控件转存XML加载XML利用Helper 此窗体有两个TreeView 一键复制TreeView1 到 TreeView2 而且保留tree1中的的image 存储xml 加载xml 清除node 加载treeview 用到了tag,selectimage等参数