标签: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);
}
}
}
标签:sso books 编程 xml解析 rod 框架 default complex saxreader
原文地址:http://blog.51cto.com/13962277/2172981