xml解析技术

来源:互联网 发布:足球数据统计 编辑:程序博客网 时间:2024/06/06 04:33

XML解析技术概述:

XML解析方式分为两种:dom和sax

dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。

sax: (Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。

XML解析器

Crimson、Xerces 、Aelfred2

XML解析开发包

Jaxp、Jdom、dom4j

使用JAXP进行DOM解析

javax.xml.parsers 包中的DocumentBuilderFactory用于创建DOM模式的解析器对象 , DocumentBuilderFactory是一个抽象工厂类,它不能直接实例化,但该类提供了一个ewInstance方法 ,这个方法会根据本地平台默认安装的解析器,自动创建一个工厂的对象并返回。

l获得JAXP中的DOM解析器

调用 DocumentBuilderFactory.newInstance() 方法得到创建 DOM 解析器的工厂。

调用工厂对象的 newDocumentBuilder方法得到 DOM 解析器对象。

调用 DOM 解析器对象的 parse() 方法解析 XML 文档,得到代表整个文档的 Document 对象,进行可以利用DOM特性对整个XML文档进行操作了。

Node对象

Node对象提供了一系列常量来代表结点的类型,当开发人员获得某个Node类型后,就可以把Node节点转换成相应的节点对象(Node的子类对象),以便于调用其特有的方法。(查看API文档)

Node对象提供了相应的方法去获得它的父结点或子结点。编程人员通过这些方法就可以读取整个XML文档的内容、或添加、修改、删除XML文档的内容了。


Document对象

DOM4j中,获得Document对象的方式有三种:

1.读取XML文件,获得document对象

SAXReader reader = new SAXReader();

Document document = reader.read(new File("input.xml"));

2.解析XML形式的文本,得到document对象.

String text = "";

Document document = DocumentHelper.parseText(text);

3.主动创建document对象.

Document document = DocumentHelper.createDocument();

//创建根节点

Element root = document.addElement("members");


节点对象:

  1.获取文档的根节点.

  Element root = document.getRootElement();

  2.取得某个节点的子节点.

  Element element=node.element(“书名");

  3.取得节点的文字

  String text=node.getText();

  4.取得某节点下所有名为“member”的子节点,并进行遍历.

  List nodes = rootElm.elements("member");

  for (Iterator it = nodes.iterator(); it.hasNext();) {

  Element elm = (Element) it.next();

  // do something

  }

  5.对某节点下的所有子节点进行遍历.

  for(Iterator it=root.elementIterator();it.hasNext();){

  Element element = (Element) it.next();

  // do something

  }

  6.在某节点下添加子节点.

  Element ageElm = newMemberElm.addElement("age");

  7.设置节点文字.

  element.setText("29");

  8.删除某节点.

  //childElm是待删除的节点,parentElm是其父节点

  parentElm.remove(childElm);

  9.添加一个CDATA节点.

  Element contentElm = infoElm.addElement("content");

  contentElm.addCDATA(diary.getContent());


  l节点对象属性

  1.取得某节点下的某属性

  Element root=document.getRootElement();

  //属性名name

  Attribute attribute=root.attribute("size");

  2.取得属性的文字

  String text=attribute.getText();

   3.删除某属性

  Attribute attribute=root.attribute("size");

  root.remove(attribute);


  3.遍历某节点的所有属性

  Element root=document.getRootElement();

  for(Iterator it=root.attributeIterator();it.hasNext();){

  Attribute attribute = (Attribute) it.next();

  String text=attribute.getText();

  System.out.println(text);

  }

  4.设置某节点的属性和文字.

  newMemberElm.addAttribute("name", "sitinspring");

  5.设置属性的文字

  Attribute attribute=root.attribute("name");

  attribute.setText("sitinspring");



原创粉丝点击