分享1

XML *

可扩展 标记 语言.

特性:
1. 是一门独立的标记语言.
2. 具有平台无关性.
3. 具有自我描述性.

用途:
1. 网络数据的传输.
2. 数据存储.
3. 配置文件.

XML 语法格式

XML文档通常存储在.xml文件中.

语法结构:

1.  文档声明
    <?xml version="1.0" encoding="UTF-8"?>

2.  标记 (元素 / 标签 / 节点)
        XML文档,由一个个的标记组成.
        语法:
            开始标记:<标记名称>
            结束标记:</标记名称>

            标记名称:   标记名称是自定义的 , 命名规则参考Java 的标识符命名规则.
            标记内容:   开始标记 与 结束标记之间 是标记的内容部分.

        例如:
            描述一个姓名:
            <name>张三</name>

3.  标记之间可以嵌套 , 但是不允许交叉.
        正例:
            <person>
                <name>小泽马老师</name>
                <age>18</age>
            </person>

        反例:
            <person>
                <name><age>小泽马老师</name>
                18</age>
            </person>

4.  一个XML文档, 必须有 且 仅允许存在一个 根标记.
        正例:
            <persons>
                <person>
                    <name>小泽马老师</name>
                    <age>18</age>
                </person>
                <person>
                    <name>小泽马老师</name>
                    <age>18</age>
                </person>
            </persons>
        反例:
                <person></person>
                <person></person>

5.  标记的嵌套关系( 子标记 , 父标记 , 兄弟标记 , 后代标记 , 祖先标记 )

        例如 :
            <persons>
                <person>
                    <name>小泽马老师</name>
                    <age>18</age>
                </person>
                <person>
                    <name>小泽马老师</name>
                    <age>18</age>
                </person>
            </persons>

        在上述的案例中:
            name是person的子标记
            person是name的父标记
            name和age是兄弟标记
            name是persons和person的后代标记
            persons 是name 的祖先标记

6.  标记名称允许重复.
7.  标记的属性.
        标记中存在属性, 在开始标记位置, 编写属性列表.
        格式:
            属性由属性名和属性值组成.           
            属性名与属性值之间使用等号连接, 属性值使用引号引住.
            多个属性之间 ,使用空白符隔开.

        例如:
            <person id="1001" sex="不详">
                <name>武藤马老师</name>
            </person>

8.  注释:
        注释开始:   <!--
        注释结束:   -->

案例:

描述一组学生, 存储到一个students.xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1001">
<name>小泽马</name>
<age>18</age>
</student>
<student id="1002">
<name>加藤马</name>
<age>19</age>
</student>
<student id="1003">
<name>仓井马</name>
<age>20</age>
</student>
</students>

练习

books.xml
描述一组图书 books . books中至少包含三本图书book
book中包含子节点:
    -   图书名称:name
    -   图书信息:info
book中包含属性:id

<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1001">
<name>金苹果</name>
<info>讲述了果农辛勤劳动, 种出金色苹果的童话故事.</info>
</book>
<book id="1002">
<name>银苹果</name>
<info>讲述了果农辛勤劳动, 种出银色苹果的童话故事.</info>
</book>
<book id="1003">
<name>铜苹果</name>
<info>讲述了果农辛勤劳动, 种出铜色苹果的童话故事.</info>
</book>
</books>

Java解析XML文档 掌握

面试题 *****
问:  Java中有几种XML解析方式 ? 分别是什么 ? 有什么优缺点 ? 

答:
可以回答两种 或 四种:

1.  SAX解析
        是事件驱动机制的解析方式.
        采用逐行读取的方式解析XML , 每当读取到一个标记的开始/结束/内容时 触发程序员事先准备好的处理代码. 进行处理.

        优点:
            在读取大文件时, 节省内存.

        缺点:
            1.  因为逐行解析, 当解析第N行时 , 第n-1行的数据 已经被释放了.
            2.  因为事件驱动机制, 无法告知程序员节点层次.
            3.  sax解析是只读解析方式, 无法修改文档内容.

2.  DOM解析
        直接将整个文档, 加载到内存. 在内存中建立文档树模型 (树对象)
        通过操作文档树, 来完成数据的修改 获取 和删除.

        优点:
            文档一次性加载到内存, 可以进行任意的读取, 修改, 删除.

        缺点:
            文档一次性加载到内存, 浪费大量的内存. 
            如果文件较大, 可能无法解析.

3.  JDOM解析
        是DOM解析的扩展, 与DOM解析的优缺点基本一致;
4.  DOM4J解析
        是DOM解析的扩展, 与DOM解析的优缺点基本一致;

DOM4J解析XML 掌握

步骤:
1.  引入jar文件 (dom4j.jar)
2.  创建一个输入流 , 指向一个XML文件.
        FileInputStream fis = new FileInputStream(&quot;文件的地址&quot;);
3.  创建一个XML读取工具对象
        SAXReader sr = new SAXReader();
4.  通过读取工具对象, 读取XML文档输入流.并得到返回值( 返回的是读取到的文档对象 )
        Document doc = sr.read(fis);
5.  通过文档对象,  获取XML文档中的根元素对象
        Element root = doc.getRootElement();

元素对象 Element的常用方法.
1.  获取节点名称
        String name = element.getName();
  1. 获取节点内容
    String text = element.getText();

  2. 设置节点内容
    element.setText(String text);

  3. 根据子节点名称, 获取匹配名称的第一个子节点
    Element e = element.element("节点名称");

  4. 获取所有的子节点对象
    List<Element> list = element.elements();

  5. 获取节点属性值
    String value = element.attributeValue(String 属性名);

  6. 获取子节点内容
    String text = element.elementText(String 节点名称);

  7. 添加子节点
    Element e = element.addElement(String 子节点名称);

  8. 添加属性
    element.addAttribute(String 属性名,String 属性值);

XML文档的生成 了解

步骤:
    1.  通过文档帮助器(DocumentHelper) 创建空的文档对象
            Document doc = DocumentHelper.createDocument();
    2.  通过文档对象, 添加根节点
            Element root = doc.addElement("根节点名称");
    3.  通过根节点, 丰富文档内容
4.  创建一个文件输出流 , 用于存储XML文件.
    FileOutputStream fos = new FileOutputStream(&quot;要存储的文件路径&quot;);
5.  将文件输出流, 转换为XML文件输出流.
    XMLWriter xw = new XMLWriter(fos);
6.  将文档输出到文件中
    xw.write(doc);
7.  释放资源
    xw.close();

Java 解析网络xml文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值