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 在设置输出属性方面的灵活性与前面两种方法是不相上
下的。
分享到:
相关推荐
利用pugixml 转化xml为string
本文将深入探讨如何将图片数据保存到XML文件中,以及如何从XML文件中恢复图片。 首先,我们需要理解图片和XML之间的转换原理。图片本质上是二进制数据,而XML文件则主要用于存储结构化文本信息。为了将图片保存到...
在C++中读取和保存XML,通常需要借助第三方库,如TinyXML、pugixml、libxml2等。这些库提供了API,使得程序员能够方便地解析XML文档,访问其元素、属性和文本内容,并创建新的XML结构。 对于"读取XML",通常的过程...
例如,一个简单的XML保存函数可能如下所示: ```csharp private void SaveTreeViewToXML(TreeView treeView, string filePath) { XmlDocument xmlDoc = new XmlDocument(); XmlElement rootElement = xmlDoc....
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 框架与XML库,如TinyXML2,来实现保存控件数据至XML文件以及从XML文件中读取数据回控件的功能。这对于创建应用程序配置文件或者保存用户自定义...
本资源提供了一种利用C#操作XML文件来保存和读取数据的方法,这对于初学者了解如何在应用程序中持久化数据极其有用。 XML文件通常用于存储配置信息、数据传输或保存程序状态。C#提供了System.Xml命名空间,其中包含...
doc.Save("路径\to\file.xml") ' 保存到指定文件 ``` 二、XML文件的读取 读取XML文件,通常使用`XDocument.Load`方法加载XML文档,然后通过LINQ查询或遍历节点来获取所需信息: ```vbnet Dim doc As XDocument = ...
3. 保存XML文件:使用`SaveXMLFile()`方法,将XMLDocument对象的内容保存到文件中。 例如: ```powerbuilder object xmlDoc : XMLDocument string strFilePath = "C:\new_example.xml" // 创建XMLDocument对象 ...
不仅如此,Qt还允许我们将这些图形保存为XML格式,便于数据交换、存储和后期处理。 首先,要绘制图形,我们需要创建一个继承自`QWidget`或`QGraphicsView`的类,然后重写`paintEvent(QPaintEvent *)`方法。在这个...
在处理XML文件时,通常涉及的主要操作包括创建、读取、修改和保存。下面将详细阐述这些知识点。 一、创建XML文件 创建XML文件首先需要遵循XML的基本语法规则,如声明文档类型(`<?xml version="1.0" encoding="UTF-...
通过Qt的XML模块,我们可以方便地读取XML文件,将其内容加载到QTreeWidget中展示,同时也能将QTreeWidget中的数据导出并保存为XML文件。此外,我们还将讨论QTreeWidget项的拖放功能,使得用户可以更加直观地操作数据...
通过实例158 如何使用XML保存查询结果的代码,你将获得更具体的实现细节,包括可能的自定义方法和组件用法。这个实例对于初学者来说,是一个很好的学习资源,能够帮助他们理解Delphi与XML的交互方式。
本文将深入探讨如何通过Socket编程来获取XML文件内容,并将其保存到本地,随后进行解析。首先,我们需要理解Socket编程的基本概念。 Socket编程是网络编程的核心部分,它提供了进程间的通信机制,允许不同计算机上...
总结,C#中保存数据为XML格式涉及到对System.Xml命名空间的理解和应用,包括创建XML文档、元素、属性,并将它们组织成符合需求的结构,最后将其保存到文件。这使得数据能够以标准、跨平台的方式进行存储和传输。在...
标题中的“xml文件保存自动刷新”指的是当开发者在编辑并保存XML配置文件后,系统能够自动检测到这些变化并立即应用它们,无需手动刷新或重启应用。在Spring和MyBatis集成的环境中,这种功能可以显著提升开发者的...
本篇文章将深入探讨如何在QT4中读取XML文件,并将所有节点保存到`QTreeWidget`中。 首先,我们需要导入必要的QT库,包括`QtXml`和`QtWidgets`: ```cpp #include #include #include ``` 接下来,我们需要一个...
本文将详细介绍如何将XML文件写入本地,并进行解析,同时讨论自定义保存路径的相关策略。 1. **XML文件结构** - XML文件由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成,元素是XML文档的...
关于Delphi7读取保存XML 读取XML,修改节点,保存XML的一个完整实例。
本项目“数据保存到xml练习”主要关注如何通过单页表单收集用户输入,然后将这些数据保存到XML文件中。下面我们将详细探讨这个过程涉及的关键知识点。 首先,`singlePageList.aspx`和`singlePageAdd.aspx`是两个...
根据给定的信息,本文将详细解释如何使用C#编程语言将XML文档保存到指定的文件。此示例涉及的关键概念包括XML文档操作、C#基本语法、事件处理以及Web应用程序中的页面生命周期管理。 ### 一、理解XML文档 XML...