XML解析笔记
发布时间:2020-12-16 08:24:48 所属栏目:百科 来源:网络整理
导读:JAXP(Java API for XML Processing)是一种稳定、可靠的XML处理API,支持SAX(Simple API for XML)和DOM(Document Object Model)两种XML处理方法。 SAX提供了一种流式的、事件驱动的XML处理方式,但编写处理逻辑比较复杂,比较适合处理大的XML文件。 DOM
JAXP(Java API for XML Processing)是一种稳定、可靠的XML处理API,支持SAX(Simple API for XML)和DOM(Document Object Model)两种XML处理方法。
SAX提供了一种流式的、事件驱动的XML处理方式,但编写处理逻辑比较复杂,比较适合处理大的XML文件。 DOM和SAX不同,其工作方式是:首先将XML文档一次性装入内存;然后根据文档中定义的元素和属性在内存中创建一个“树形结构”,也就是一个文档对象模型,将文档对象化,文档中每个节点对应着模型中一个对象;然后使用对象提供的编程接口,访问XML文档进而操作XML文档。
DOM加载原理
引入的包
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Comment; import org.w3c.dom.DOMException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException;
一般的JAXP处理都是从工厂开始,通过调用DocumentBuilderFactory的newInstance()方法,获得用于创建DOM解析器的工厂。
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
这里并没有创建出DOM解析器,只是获得一个用于创建DOM解析器的工厂,接下来需要对上述newInstance()方法得到的docBuilderFactory对象进行一些设置,才能进一步通过DocumentBuilderFactory,得到DOM解析器对象builder。
针对DocumentBuilderFactory对象进行的主要设置包括: 忽略XML文档中的注释; //ignore all comments inside the xml file docBuilderFactory.setIgnoringComments(true); 支持XML空间; //allow includes in the xml file docBuilderFactory.setNamespaceAware(true); 支持XML的包含机制(XInclude)。 docBuilderFactory.setXIncludeAware(true); XInclude机制允许将XML文档分解为多个可管理的块,然后将一个或多个较小的文档组装成一个大型文档。也就是说,配置文件中,可以利用XInclude机制将其他配置文件包含进来一并处理,下面是一个例子: <configuration xmlns:xi="http://www.w3.org/2001/XInclude"> …… <xi:include href="conf4performance.xml"/> </configuration> 通过XInclude机制,把配置文件conf4performance.xml嵌入到当前配置文件,这种方法更有利于对配置文件进行模块化管理,同时就不需要再使用加载配置文件的方法加载资源conf4performance.xml了。 设置完DocumentBuilderFactory对象以后,通过docBuilderFactory.newDocumentBuilder()获得了DocumentBuilder对象, DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
用于从各种输入源解析XML。调用DocumentBuilder.parse()函数,返回一个DOM解析结果。
doc = builder.parse(input); NodeList props = root.getChildNodes(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- postgresql – 如何从执行的预准备语句中获取$1参数的值(使
- winform程序编译的时候,项目里的xml生成到debug目录下对应
- 聚合第四方支付系统开发-锋锐支付系统
- 如何使用C在后台跟踪剪贴板更改
- grep命令与正则表达式(过滤)二
- cocos2d::CCFileUtils::sharedFileUtils()->getFileData(
- Json.Net 3.0应用:asp.net 3.5 操作Json数据
- Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
- 【荐】Grand Central Dispatch Tutorial for Swift: Part 1
- Oracle rebuild index 使用 parallel 时 与 并行度 的注意事