### XML基础知识解析与应用 XML(可扩展标记语言)是一种用于描述数据的标记语言,它在数据交换、存储以及文档管理等领域发挥着重要作用。对于初学者而言,掌握XML的基础知识是进入这一领域的关键。 #### 1. XML处理方式:SAX、DOM与DOM4J XML的处理方式主要有三种:SAX、DOM以及DOM4J,它们各有优势和适用场景: - **SAX(Simple API for XML)**:这是一种基于事件驱动的模型,适合于处理大型的XML文件。SAX逐行读取并解析XML文件,因此在内存占用上比DOM更少。然而,由于其一次性处理的特点,如果需要多次访问或修改XML文件中的元素,则不建议使用SAX。 - **DOM(Document Object Model)**:提供了对整个XML文档的树状视图,允许用户通过遍历树来操作文档。DOM将整个XML文档加载到内存中,因此在处理大型文件时可能会导致内存不足的问题。DOM适用于需要频繁访问和修改XML文档的场景。 - **DOM4J**:这是一个Java库,提供了一种轻量级且功能强大的方式来处理XML。相比于DOM,DOM4J在性能和易用性方面都有显著提升,尤其适用于中小型的XML文件处理。 在选择XML处理方式时,通常遵循以下原则:对于小规模的XML文件,DOM4J是首选;而对于大规模的数据处理,则应考虑使用SAX。 #### 2. 使用DOM4J创建XML文档 DOM4J提供了丰富的API来帮助开发者创建、读取、更新和删除XML文档。以下是一些基本操作的示例: - 创建XML文档:通过`DocumentHelper.createDocument()`方法可以创建一个空的XML文档对象。 - 添加根元素:使用`addRoot("root")`方法可以为文档添加根元素。 - 添加子元素和属性:可以使用`addElement("child")`和`addAttribute("name", "value")`等方法向元素添加子元素和属性。 - 设置文本内容:使用`setText("text")`方法可以设置元素的文本内容。 - 写入文件:通过`XMLWriter`类可以将XML文档写入到文件中。创建一个`XMLWriter`对象,并指定输出流和编码格式;然后调用`write()`方法将文档写入文件。 #### 3. XML文档的创建与写入过程 创建XML文档涉及以下步骤: 1. 使用`DocumentHelper.createDocument()`创建一个XML文档对象。 2. 向文档添加根元素和子元素。 3. 设置元素的属性和文本内容。 4. 使用`OutputFormat`类定义输出格式,如换行、编码和缩进。 5. 创建`XMLWriter`对象,并指定输出流和格式。 6. 调用`write()`方法将文档写入文件。 #### 4. 读取XML文档 读取XML文档主要依赖于SAX和DOM两种技术。使用SAX读取XML文件时,需要实例化一个`SAXReader`对象,然后调用`read()`方法来解析文件。而使用DOM,则可以通过`DocumentBuilderFactory`创建`DocumentBuilder`对象,再调用其`parse()`方法来解析文件。 通过上述知识点的梳理,我们不仅了解了XML的基本概念和处理方式,还掌握了使用DOM4J创建和操作XML文档的具体方法。这对于初学者快速入门XML编程具有重要的指导意义。
1.性能比较:sax效率比dom高(sax省内存,dom占内存)
2.操作比较:dom操作比sax简单(所以dom是最主流最常用的方式,就连大名鼎鼎的Hibernate也用dom4j)
3.使用选择:解析中小数据量的xml最好选dom4j,解析大数据量的xml最好选sax
二.用dom4j操作xml
1.创建xml文档并将文档输出到硬盘中
(1).创建xml文档对象并向其中添加节点和设置属性:
Document xmlDocument=DocumentHelper.createDocument();//创建一个只有版本信息的空xml文档对象
Element xxElement=空xml文档对象/根节点对象/其它节点对象.addElement("elementName");//给空的xml文档/其根节点添加根/子节点
xxElement.addAttribute("attributeName","attributeValue");//给节点添加属性和属性值
xxElement.setText("节点中的值");//给双节点设置节点间的值
//xxElement.addElement("elementName").setText("value");//支持级联调用方法
(2).创建xml文档格式化对象并设置格式化方式:(可无)
OutputFormat opf=new OutputFormat();//实例化输出格式化对象
opf.setNewlines(true);//设置换行
opf.setEncoding("gb2312");//设置编码方式
opf.setIndent("\t");//设置缩进
(3).创建xml文档输出对象并将文档输出
方案一.
XMLWriter xmlWriter=new XMLWriter(new OutputStreamWriter(new FileOutputStream("d://*.xml"),"编码方式"));
xmlWriter.write(xmlDocument);
xmlWriter.flush();
方案二.
XMLWriter xmlWriter=new XMLWriter(opf);//创建XML输出对象,当不需要格式化时直接不传入格式化对象即可
File xmlFile=new File("D:/*.xml");//根据指定的文件名(xxx路径下的xxx文件)实例化文件对象
FileOutputStream fops=new FileOutputStream(xmlFile);//以创建的文件对象创建文件输出流对象
xmlWriter.setOutputStream(fops);//将指定的输出流对象设置为将要输出的对象
xmlWriter.write(xmlDocument);//将指定的对象输出
xmlWriter.flush();
注:将数据库表中的数据转换为xml同上
- 粉丝: 2
- 资源: 54
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助