XML解析

Xml解析

一、方式

1. DOM解析

JAXP sun公司

JDOM 第三方

DOM4J 第三方 最好用

2. Sax解析

原装SAX解析 sun公司

 

二、DOM

DOM

 

 

理解:将文档解析成文档对象,并且文档中的各项内容都被封装成了单独但有关系的对象节点(node,通过对树中节点的操作就能实现对文档的操作。

 

三、DOM4J使用方法

1. 在项目根目录下添加lib文件夹

2. dom4j-1.6.1.jar复制到lib文件夹中

3. 右键单击jar包——Build path——Add to build path

4. 结合文档index.html中的,见下图

 

四、读取xml

常用方法

 

获取节点或标签

// 创建解析器对象

SAXReader reader = new SAXReader();

// 通过解析器对象得到文档对象

Document doc = reader.read("src/students.xml");

 

 

//得到当前对象的所有子节点迭代器

Iterator<Node> it = doc.nodeIterator();

 

//根据名称获得指定元素方法

Element ele = root.element("student");

 

// 获取当前元素下的所有子元素(迭代器)

Iterator<Element> it = ele.elementIterator();

 

// 获取当前元素下的所有子元素(集合)

List<Element> li = ele.elements();

 

 

获取属性

注:只有标签才有属性,所以应先获取标签。

//获取属性迭代器

Iterator<Attribute> it = ele.attributeIterator();

 

//获取属性集合

List<Attribute> li = ele.attributes();

 

获取文本

//先获取标签对象

Element ele = doc.getRootElement().element("student").element("name");

//获取标签对象的文本

Ele.getText();

 

 

 

//先获取标签对象

Element ele = doc.getRootElement().element("student");

//通过父标签直接获取自标签对象的文本

ele.elementText("name");

 

 

五、创建xml

使用对象XMLWriter将文本对象(Document)写出到指定的xml文件中。

//OutputFormat format = OutputFormat.createPrettyPrint();//漂亮的格式

OutputFormat format = OutputFormat.createCompactFormat();//紧凑的格式

//设置编码

format.setEncoding("GBK");

XMLWriter writer = new XMLWriter(new FileOutputStream(

"d:\\students.xml"),format);

writer.write(doc);

writer.close();

 

常用添加方法

//添加标签(根标签只能添加一个)

doc.addElement("students");

//给指定的标签添加属性

ele1.addAttribute("id", "1");

//给指定的标签添加文本

name.addText("赵健");

 

常用删除方法

//删除标签方法

Element ele = (Element)doc.getRootElement().elements().get(0);

// ele.detach(); //元素本身的删除方法

Element name = ele.element("name");

//通过父元素删除子元素

name.getParent().remove(name);

 

 

//删除属性同标签

 

常用修改方法

//修改标签方法

Element ele = doc.getRootElement().element("student");

//ele.setName("a");   //修改标签名称

//ele.setText("趙雲");   //修改标签文本

 

 

//修改标签属性

//先得到标签对象

Element ele = doc.getRootElement().element("student");

//得到属性对象

Attribute att = ele.attribute(0);

//设置属性值

att.setValue("3");

 

五、XPath

 

用法:

添加jaxen-1.1-beta-6.jarlib文件夹,且Add to build path

(注:核心包不能少)

 

 

 

/  绝对路径,表示从根标签开始

// 相对路径

*  通配符

[] 指定条件

@ 指定属性

 

 

 

六、Sax解析

 

用法:参考Sun官方API中的,SAXParser类

注:DefaultHandler是基类,基类一般需要自定义子类。

//创建工厂对象

SAXParserFactory factory = SAXParserFactory.newInstance();

//创建解析器对象

SAXParser parser = factory.newSAXParser();

InputStream is = new FileInputStream("src\\students.xml");

MyDefaultHandler dh = new MyDefaultHandler();

parser.parse(is,dh);

 

SAX的优势

 

这种处理非常象流的好处;可以立即开始分析,而不是必须等待所有要处理的数据。

由于应用程序简单地检查经过其的数据,所以不需要将数据存储在内存里。当遇到大文档时,这是一个突出的优势。

一般来讲,SAX 还比DOM快。

SAX的劣势

由于应用程序不以任何方式存储数据,所以,使用 SAX 时,不可能对数据进行更改。

 

 

 

选择 DOM 还是 SAX,这取决于几个因素:

应用程序的目的:如果必须对数据进行更改,并且作为 XML 将它输出,则在大多数情况下,使用 DOM

数据的数量:对于大文件,SAX 是更好的选择。

将如何使用数据:如果实际上只使用一小部分数据,则使用 SAX 将数据抽取到应用程序中,这种方法更好些。

需要速度:通常,SAX 实现比 DOM 实现快。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值