XML处理

一、JAXP

  JAVA API For XML Processing,数以J2SE的一部分.

  1. DOM解析,解析文档时需要读取整个xml文档,在内存中构建代表整个DOM树的document对象,从而再对XML文档进行操作。

          此种情况下,如果XML文档特别大,容易消耗大量内存,容易导致内存溢出。

public class JAXPDemo {
	public static void main(String[] args) throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//得到解析器工厂
		DocumentBuilder builder = factory.newDocumentBuilder();//得到解析器
		Document doc = builder.parse("files/book.xml");//解析执行的xml文档,得到代表内存DOM树的document对象
		NodeList nl = doc.getElementsByTagName("售价");
		Node n = nl.item(0);
		Element price = doc.createElement("批发价");
		price.setTextContent("28.00元");
		n.getParentNode().insertBefore(price, n);
		TransformerFactory tff = TransformerFactory.newInstance();
		tff.setAttribute("indent-number", new Integer(2));
		Transformer tf = tff.newTransformer();
		tf.setOutputProperty(OutputKeys.INDENT, "yes");
		tf.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(new FileOutputStream("files/book.xml"), "GBK")));
	}
}

  2.SAX解析

   采用的是事件处理机制,涉及到两个部分:解析器和事件处理器。原理是,读取xml文档的时候,当读到了文档的一部分时,例如文档的开始、元素的开始、文本、元素的结束、文档的结束,都会调用事件处理器的对应的方法,读到的数据以参数的形式传递给对应的方法。相对于DOM解析方式来说,SAX方式节省内存,但是它只适用于查询操作,不能对xml文档进行修改。

二、 DOM4J

   JAXP提供的SAX的API用起来比较麻烦,不够简洁,可以使用DOM4J这个开源包,它“使用起来像DOM一样简单,使用的是SAX解析方式来解析”。DOM4J很强大的一点在于它对XPATH的支持。DOM4J依赖jaxen包。

public class DOM4JDemo {
	public static void main(String[] args) throws DocumentException {
		SAXReader reader = new SAXReader();
		Document doc = reader.read("files/book.xml");
		Element root = doc.getRootElement();
		List<Element> list = root.elements("书");
		Element book0 = list.get(0);
		Element author = book0.element("作者");
		System.out.println(author.getText());
	}
}

  利用XPATH

  

public static void dom4jDemo2() throws DocumentException{
		SAXReader reader = new SAXReader();
		Document doc = reader.read("files/book.xml");
		Node node = doc.selectSingleNode("/书架/书[1]/作者");
		Element e = (Element) node;
		System.out.println(e.getText());
	}

  

时间: 2024-08-08 22:43:55

XML处理的相关文章

Maven中,pom.xml文件报错

一:错误消息,如下图: aus 原因是本地仓库在org.codehaus.plexus:plexus-uils:pom:3.0.20下面没有jar文件,只有一个plexus-utils-3.0.20.pom.lastUpdated,如下图: 解决:将该文件夹删掉,然后右击项目:Maven->Update Project就可以了 若pom.xml里面还有类型的报错,就像这样解决就OK了

微信5.4 AndroidManifest.xml

1 <?xml version="1.0" encoding="utf-8" ?> 2 - <manifest android:versionCode="462" android:versionName="5.4.0.48_r794734" android:installLocation="auto" package="com.tencent.mm" xmlns:and

C#中XML与对象之间的序列化、反序列化

using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; namespace Xml.Utility { public static class XmlUtil { /// <summary> /// 将一个对象序列化为XML字符串 /// </summary> /// <param name="o">要序列化

logback-spring.xml的schema

<?xml version="1.0" encoding="utf-8" ?> <configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd"> </configuration>

Web.xml 中 metadata-complete 介绍

Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性, 该属性指定当前的部署描述文件是否是完全的. 如果设置为 true,则容器在部署时将只依赖部署描述文件,忽略所有的注解(同时也会跳过 web-fragment.xml 的扫描,亦即禁用可插性支持,具体请看后文关于 可插性支持的讲解): 如果不配置该属性,或者将其设置为 false,则表示启用注解支持(和可插性支持).

关于java解析xml文件出现的问题

问题1:导入javax.xml.parsers.DocumentBuilderFactory出现问题,如图: 解决办法是:由于创建工程时有个默认的jre,重新创建工程改掉就解决了,如图: 问题2:出现1 字节的 UTF-8 序列的字节 1 无效,解决办法: 使用记事本打开xml文件--点击文件-另存为-修改编码方式为UTF-8 -覆盖保存,如图: 以后出现问题还会补充

XML

一.XML概述     定义:Extensible Makeup Language(可扩展标记语言);     作用:         1.存储数据,有良好的存储格式,多种语言通用         2.作为配置文件,许多框架都使用xml作为配置文件     语法:         1.文件后缀名必须为.xml;         2.文档声明必须写在第一行,且前面不能空格,一般写法:<?xml version="1.0" encoding="UTF-8"?>

Android 编译错误——布局 Error parsing XML: not well-formed (invalid token)

在修改了Android布局文件后,编译出现Error parsing XML: not well-formed (invalid token). 首先先排查xml文件的编码格式是否为UTF-8, <?xml version="1.0" encoding="utf-8"?> ,注意,从别处copy的要留意编码格式! 还有各个标签是否有遗漏,把鼠标箭头移到出错误的layout上 点击鼠标右键选择Source然后再选Format. 都没有问题,结果发现报错处(

MyBatis应用开发(2)应用之开发方式XML文件篇

1.1. 开发方法 有三种使用MyBatis的方法: (1)使用XML配置文件的方式. (2)使用注解方式. (3)使用API方式. 1.2. XML方式 1.2.1. 开发步骤 目标:使用MyBatis从数据库中查询t_person表的全部记录. MyBatis使用XML文件来配置数据库中的记录与Java对象之间的映射关系,实现了SQL语句和Java代码的分离. 使用MyBatis 的XML配置方式开发数据库应用的步骤如下所示: (1)编写POJO类Person. (2)编写Mapper接口P

web.xml 中的listener、filter、servlet加载及一些配置

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet 同时还存在着这样一种配置节:context-param,它用于向 Servlet