XML解析相关
本文主要记录昨天学到的xml解析的相关知识。内容结构大致分为解析原理于实现方式。
解析原理
解析xml的技术不知道有多少种,但是学到的内容中讲到了两种——SAX&DOM。所以,以下就是关于它们的简要说明。
首先是dom技术,它是指把xml文档的层次结构在内存中分配为树形结构,把xml中标签、属性、文本都封装成对象。
sax则由事件驱动,一般是边读边解析。
具体实现
关于解析的具体实现也大概有很多,就我所知的JDOM、JAXP、DOM4J。不过我学到的只有一些关于JAXP和DOM4J的使用。以下是一些我对此的大概了解
JAXP
JAXP是java API xml processing的简称,由此大概可以看出这是官方提供的解析器(我对这了解几乎为零)。故使用这种方式解析xml时会较为方便。jaxp本身提供了sax和dom的解析。具体步骤分别如下:
dom解析步骤
创建解析器工厂
1
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
根据解析器工厂创建解析器
1 | DocumentBuilder builder=factory.newDocumentBuilder(); |
- 使用解析器解析xml文件,得到Document对象
1 | Document document=builder.parse("文件名称"); |
- 根据需求对document对象进行操作
- sax解析步骤
- 创建解析器工厂
1 | SAXParseFactory factory=SAXParseFactory.newInstance(); |
- 根据解析器工厂创建解析器
1 | SAXParser parser=factory.newSAXPaser(); |
- 使用解析器解析xml文件
1 | parser.parse("文件名称",new DefaultHandler1()); |
其中DefaultHandler1类是手写继承自DefaultHandler,其目的是重新一些方法。它们的名称与作用如下:
– startElement() 处理开始标签的方法
– characters() 处理文本的方法
– endElement() 处理结束标签的方法
DOM4J
dom4j不是java的一部分,使用该解析器需要导入相应的包。下面是dom4j一般解析xml文件的步骤:
- 导入dom4j提供的jar包
– 复制jar到项目中
– 鼠标右键点击jar包,build path –> add to buildpath - 得到document
1 | SAXReader reader=new SAXReader(); |
- 对document进行操作
Markdown语法
这是markdown.