zoukankan      html  css  js  c++  java
  • java基础

    原文链接

    Java进阶之"XML操作" https://zhuanlan.zhihu.com/p/30829960

    详细代码参考(必看)

    XML解析——Java中XML的四种解析方式

    1.XML全称是"(扩展标记语言)"

    是一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用于 WEB,而且可以被用于任何地方。说的明白一点就是:XML 被设计用来传输和存储数据的。

    在java中,很多配置文件,都是xml文件,比如说spring,或者mybatis.

    XML的学习和使用都很简单,我们先看它的语法.

    1.1 所有 XML 元素都须有关闭标签

    <p>有始有终</p>

    1.2 XML 标签对大小写敏感

    <Message>前后是不一样的,这就错了.</message>

    1.3 XML 必须正确地嵌套

    <b><i>同学,请注意插入顺序.</b></i>

    1.4 XML 文档必须有根元素

    XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素

    <root>
      <one>
        <two>.....</two>
      </one>
    </root>

    1.5 XML 的属性值须加引号

    <datasource id="db_oracle">这一行有引号,正确.</datasource>
    <datasource id=db_oracle>这一行没有引号,错误的.</datasource>

    1.6 特殊字符的使用方式(又叫实体引用)

    <message> 10 < 1000 </message>  //这是错误的.
    <message> 10 &lt; 1000 </message>  //这是正确的.

    在 XML 中,有 5 个预定义的实体引用:

    &lt; < 小于
    &gt; > 大于
    &amp; & 和号
    &apos; ' 单引号
    &quot; " 引号

    1.7 XML 中的注释

    <!-- 这是注释 -->  //与html的语法一样

    1.8 CDATA段

    格式:< ! [ CDATA [ 文本内容 ] ] >

    特殊标签中的实体引用都被忽略,所有内容被当成一整块文本数据对待.适用于有多个特殊字符的情况.

    语法看完了,我们看看用法.

    2.xml的解析

    xml的解析方式有多种,在Java中,我们只说两种最常用的方式.

    2.1 DOM解析方式

    DOM:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。DOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。其优缺点分别为:

    优点:把xml文件在内存中构造树形结构,可以遍历和修改节点

    缺点: 如果文件比较大,内存有压力,解析的时间会比较长

    2.2 SAX解析方式

    SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析。 其优缺点分别为:

    优点: 解析可以立即开始,速度快,没有内存压力

    缺点: 不能对节点做修改

    2.3 读取XML

    Java中常用的操作xml的一个包是dom4j的包.

    dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用的特点,同时它也是一个开放源代码的软件。使用dom4j来实现对XML文档的解析,详细过程如下:

    2.3.1 使用dom4j需要导入dom4j对应的jar包。

    2.3.2 创建SAXReader类的对象来实现读取XML文档,代码如下:

     SAXReader reader = new SAXReader();

    2.3.3 使用SAXReader类的read方法获取Document对象,Document 对象是一棵文档树的根,可为我们提供对文档数据的最初(或最顶层)的访问入口,代码如下:

     Document doc = reader.read(new File("EmpList.xml"));

    2.3.4 使用Document对象的getRootElement方法获取要解析的XML文档的根元素,该方法返回值类型为Element。Element 对象表示 XML文档中的元素。元素可包含属性、其它元素或文本。如果元素含有文本,则在文本节点中表示该文本,代码如下:

    Element root = doc.getRootElement();

    2.3.5 使用Element对象提供的方法继续解析XML文档,例如:其elements方法用来获取当前元素下的所有子元素,代码如下:

    List<Element> elements = root.elements();

    2.3.6 最后遍历list集合即可.

    2.4 写一个XML文件.

    2.4.1 使用DocumentHelper类的静态方法createDocument创建文档对象Document,代码如下所示:

     Document doc = DocumentHelper.createDocument();

    2.4.2 使用Document类的addElement方法,创建根节点<list>,代码如下所示:

    // 添加根标记
     Element root = doc.addElement("list");

    2.4.3 添加子元素

    // 向根元素中添加名为user的子元素
     Element ele = root.addElement("user");

    然后为one这个元素赋值

    ele.addAttribute("id", 1);
    ele.addElement("name").addText("小明");

    2.4.4 :生成文件

    // 写出
    XMLWriter writer = new XMLWriter();
    FileOutputStream fos = new FileOutputStream("emps.xml");
    writer.setOutputStream(fos);
    writer.write(doc);
     writer.close();

    至此.xml 读取与写出,阐述完毕.

  • 相关阅读:
    Java面试系列05(static、JVM内存模、final、abstract、interface)
    Java面试系列04(抽象、实例化、类、多态、对象、特殊对象、权限封装)
    第一个spring冲刺团队贡献分(80分满分)
    第二个Sprint冲刺第一天
    第一阶段的事后诸葛亮
    第一个Sprint冲刺成果
    第一个Sprint冲刺第十天
    第一个Sprint冲刺第九天
    第一个Sprint冲刺第八天
    第一个Sprint冲刺第七天
  • 原文地址:https://www.cnblogs.com/frankcui/p/13602008.html
Copyright © 2011-2022 走看看