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. 创建解析器工厂

      1
      DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    2. 根据解析器工厂创建解析器

1
DocumentBuilder builder=factory.newDocumentBuilder();
  1. 使用解析器解析xml文件,得到Document对象
1
Document document=builder.parse("文件名称");
  1. 根据需求对document对象进行操作
  • sax解析步骤
    1. 创建解析器工厂
1
SAXParseFactory factory=SAXParseFactory.newInstance();
  1. 根据解析器工厂创建解析器
1
SAXParser parser=factory.newSAXPaser();
  1. 使用解析器解析xml文件
1
parser.parse("文件名称",new DefaultHandler1());

其中DefaultHandler1类是手写继承自DefaultHandler,其目的是重新一些方法。它们的名称与作用如下:
– startElement() 处理开始标签的方法
– characters() 处理文本的方法
– endElement() 处理结束标签的方法

  • 其它
    在进行dom解析时,其中的Document和NodeList,Node等类都是在org.w3c.dom包下。
    大佬级的文章
    看得懂的jaxp

DOM4J

dom4j不是java的一部分,使用该解析器需要导入相应的。下面是dom4j一般解析xml文件的步骤:

  • 导入dom4j提供的jar包
    – 复制jar到项目中
    – 鼠标右键点击jar包,build path –> add to buildpath
  • 得到document
1
2
SAXReader reader=new SAXReader();
Document document=reader.read("文件名");
  • 对document进行操作

Markdown语法

这是markdown.