码迷,mamicode.com
首页 > 其他好文 > 详细

xml--概念引进

时间:2018-09-10 00:55:47      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:sso   books   编程   xml解析   rod   框架   default   complex   saxreader   

XML 的使用场景 : 充当Java程序的 配置文件.

技术分享图片

书写一个xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>

<!-- xml文件必须有一个根标签, 仅一个 -->
<store>
    <!--存储数据有两种方式, 一: 标签体中. 二: 标签头部的属性中-->
    <product category="手机数码">
        <pid>100</pid>
        <pname>华为P20</pname>
        <price>8888</price>

        <!--如果标签体中没有数据, 数据在标签头的属性中, 该标签可以书写为自关闭标签-->
        <property name="username" value="张三"></property>
        <property name="password" value="123456" />

    </product>
    <product category="电脑办公">
        <pid>200</pid>
        <pname>外星人NBility</pname>
        <price>18888</price>
    </product>
    <product category="大型家电">
        <pid>300</pid>
        <pname>海尔全自动洗衣机</pname>
        <price>666</price>
    </product>
</store>

约束介绍 (DTD, Schema)
DTD 约束 : Document Type Defination

<!DOCTYPE books[
        <!ELEMENT books (book+)>
        <!ELEMENT book (name, price)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT price (#PCDATA)>
        <!ATTLIST book author CDATA #REQUIRED> <!-- #IMPLIED 可选 -->
        ]>

xml 文件编写 :

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE books[
        <!ELEMENT books (book+)>
        <!ELEMENT book (name, price)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT price (#PCDATA)>
        <!ATTLIST book author CDATA #REQUIRED> <!-- #IMPLIED 可选 -->
        ]>

<books>
    <book author="张三丰">
        <name>Java从入门到入土</name>
        <price>19888</price>
    </book>
    <book author="灭绝师太">
        <name>Java编程思想</name>
        <price>98</price>
    </book>
</books>

Schema 约束 : XML Scheman

<!--
   传智播客 Schema 教学实例文档 :
   模拟 spring 框架规范 : 如果开发人员需要在 xml 使用当前 schema 约束, 必须包含指定命名空间.
   格式如下 :
   <beans xmlns="http://www.example.org/bean-schema"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.example.org/bean-schema bean-schema.xsd"> xml schema defination
   </beans>
 -->

<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.example.org/bean-schema"
        xmlns:tns="http://www.example.org/bean-schema"
        elementFormDefault="qualified">
    <!-- 声明根标签 -->
    <element name="beans">
        <complexType>
            <sequence>
                <element name="bean" minOccurs="0" maxOccurs="unbounded">
                    <complexType>
                        <sequence>
                            <element name="property" minOccurs="0" maxOccurs="unbounded">
                                <complexType>
                                    <attribute name="name" type="string" use="required"></attribute>
                                    <attribute name="value" type="string" use="required"></attribute>
                                </complexType>
                            </element>
                        </sequence>
                        <attribute name="id" type="string" use="required"></attribute>
                        <attribute name="className" type="string" use="required"></attribute>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

xml 文件编写 :

<?xml version="1.0" encoding="UTF-8" ?>

<beans xmlns="http://www.example.org/bean-schema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.example.org/bean-schema bean-schema.xsd">

    <bean id="001" className="cn.itcast.bean.User" >
        <property name="username" value="Peter" />
        <property name="password" value="123456" />
    </bean>

    <bean id="002" className="cn.itcast.bean.User">
        <property name="username" value="张三"></property>
        <property name="password" value="654321"></property>
    </bean>

</beans>

XML解析

Dom4j (思想: 文档树思想) 将 xml 文件读取到内存, 形成一个文档树, 然后进行解析.
技术分享图片

@Test
public void test1() throws DocumentException {

// 1. 创建一个 SAXReader 对象
SAXReader saxReader = new SAXReader();

// 2. 调用 read 方法, 将 xml 读取到内存, 形成一颗文档树
Document document = saxReader.read("books.xml");

// 3. 获取根标签
Element root = document.getRootElement();

// 4. 获取子标签
List<Element> bookElements = root.elements();

// 5. 遍历
for (Element book : bookElements) {

    // 6. 获取属性
    String author = book.attributeValue("author");
    System.out.println("author = " + author);

    // 7. 获取子标签
    List<Element> elements = book.elements();

    // 8. 遍历子标签
    for (Element element : elements) {

        // 9. 获取名称和文本
        String name = element.getName();
        String text = element.getText();
        System.out.println(name + " = " + text);
    }
}

}

xml--概念引进

标签:sso   books   编程   xml解析   rod   框架   default   complex   saxreader   

原文地址:http://blog.51cto.com/13962277/2172981

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!