首页 > 其他 > 详细

XML处理——解析与写入

时间:2017-03-30 15:52:46      阅读:115      评论:0      收藏:0      [点我收藏+]

转载请注明原文地址:

   XML文档以层级标签的形式来组织数据,多用于配置文件、存储静态数据、交换数据。

   XML语法

   1 每个XML文档都XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0"?>

   2 任何的起始标签都必须有一个结束标签。   

   3 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签。

   4 标签如果有属性,属性值必须加双引号。

 

    XML文档解析

   首先我们要知道,“XML中的内容都是结点”,这句话的意思是:XML文档中,无论是  <> </> 符号的里面的内容(属性)、之间的内容(结点值)、还是 <> 本身(结点),都是Node,就连标签之间的换行、空格都是一个节点。明白这个很重要,因为下面遍历结点时,返回的 属性名值对 、结点值内容、结点本身 都是一个Node类型。

   一:DOM方法

   Java自身原生的两种解析XML方式之一——DOM方法,原理是:首先在内存中创建一个Document对象,然后把XML文档读取进来赋值给这个dom对象。由于dom对象是基于树结构的,所以对dom对象进行遍历即可。对内存中的dom对象可以进行查询、修改、删除操作,还可以写回原XML文档保存修改。

   优点:
    a、由于整棵树在内存中,因此可以对xml文档随机访问
    b、可以对xml文档进行修改操作
   缺点:
    a、整个文档必须一次性解析完
    a、由于整个文档都需要载入内存,对于大文档成本高

 

   操作步骤:

   1:创建DocumentBuilderFactory,由newInstance()方法获取工厂实例;

   2:由工厂创建DocumentBuilder;

   3:通过  Document dom=builder.parse(file);  读取xml文档创建dom对象;

   4:通过dom对象的一系列方法获取某个结点、某名字的结点列表:

 Element getElementById(String elementId) 
          返回具有带给定值的 ID 属性的 Element。 
 NodeList getElementsByTagName(String tagname) 
          按文档顺序返回包含在文档中且具有给定标记名称的所有 Element 的 NodeList。 

   5:通过NodeList对象获取结点列表中某个结点:

 Node item(int index) 
          返回集合中的第 index 个项。 

   6:通过Node对象读取结点属性:

 NamedNodeMap getAttributes() 
          包含此节点的属性的 NamedNodeMap(如果它是 Element);否则为 null。 

    然后对NamedNodeMap对象调用以下方法获取属性:(前面我们说过,属性也是结点)

 Node  getNamedItem(String name) 
          检索通过名称指定的节点。

      或

 Node item(int index) 
          返回映射中第 index 个项。 

   最后,对返回的属性通过以下方法获取名、值:(属性也是结点)

 String getNodeName() 
          此节点的名称,取决于其类型; 

 String getNodeValue() 
          此节点的值,取决于其类型;

   7:获取结点的子节点列表:

 NodeList getChildNodes() 
          包含此节点的所有子节点的 NodeList。 

   8:获取结点值:

 String getNodeName() 
          此节点的名称,取决于其类型; 

 String getNodeValue() 
          此节点的值,取决于其类型;
二:SAX方法

Java原生的XML解析方法之二——SAX方法,原理:通过parse(file,listener)函数用一个listener对xml文件进行查找,按顺序读取文档,遍历每个标签,当发现目标标签

 

XML处理——解析与写入

原文:http://www.cnblogs.com/ygj0930/p/6646572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!