XML

XML作用
存储数据

格式:
<?xml version="1.0" encoding="UTF-8"?>
<web -app version="2.5">
</web-app version="2.5">

转义字符
< &lt;
> &gt;
" &quot;
' &apos;
& &amp;


cdata区
<![CDATA[转移的内容]]>

DTD约束
定义元素语法:<!ELEMENT元素名 元素描述>
元素名:自定义
元素描述包括 : 符号和数据类型
常见符号: ? * + () | ,
常见类型:#PCDATA表示内容是文本,不能是子标签
? 0-1
* n
+ 1-n
() 分组
| 或
, 顺序出现

1.内部DTD,在XML文档内部嵌入DTD,只对当前XML有效。
2.外部DTD——本地DTD,DTD文档在本地系统上,公司内部自己项目使用。
3.外部DTD——公共DTD,DTD文档在网络上,一般都有框架提供。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!--
 3 
 4     <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
 5 -->
 6 <!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
 7 <!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
 8 <!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
 9 <!ELEMENT servlet-name (#PCDATA)>
10 <!ELEMENT servlet-class (#PCDATA)>
11 <!ELEMENT url-pattern (#PCDATA)>
12 <!ELEMENT description (#PCDATA)>
13 <!ELEMENT jsp-file (#PCDATA)>
14 
15 <!ELEMENT welcome-file-list (welcome-file+)>
16 <!ELEMENT welcome-file (#PCDATA)>
17 
18 <!ATTLIST web-app version CDATA #IMPLIED>

文件格式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
<web-app version="2.3">    
<servlet>
        <servlet-name></servlet-name>
        <servlet-class></servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name></servlet-name>
        <url-pattern></url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file></welcome-file>
        <welcome-file></welcome-file>
    </welcome-file-list>
</web-app>

Schema约束

类似dtd约束

源码格式:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!-- 
 3     模拟servlet2.5规范,如果开发人员需要在xml使用当前Schema约束,必须包括指定命名空间。
 4     格式如下:
 5     <web-app xmlns="http://www.example.org/web-app_2_5" 
 6             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 7             xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
 8             version="2.5">
 9 -->
10 <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
11     targetNamespace="http://www.example.org/web-app_2_5"
12     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
13     xmlns:tns="http://www.example.org/web-app_2_5" 
14     elementFormDefault="qualified">
15     
16     <xsd:element name="web-app">
17         <xsd:complexType>
18             <xsd:choice minOccurs="0" maxOccurs="unbounded">
19                 <xsd:element name="servlet">
20                     <xsd:complexType>
21                         <xsd:sequence>
22                             <xsd:element name="servlet-name"></xsd:element>
23                             <xsd:element name="servlet-class"></xsd:element>
24                         </xsd:sequence>
25                     </xsd:complexType>
26                 </xsd:element>
27                 <xsd:element name="servlet-mapping">
28                     <xsd:complexType>
29                         <xsd:sequence>
30                             <xsd:element name="servlet-name"></xsd:element>
31                             <xsd:element name="url-pattern" maxOccurs="unbounded"></xsd:element>
32                         </xsd:sequence>
33                     </xsd:complexType>
34                 </xsd:element>
35                 <xsd:element name="welcome-file-list">
36                     <xsd:complexType>
37                         <xsd:sequence>
38                             <xsd:element name="welcome-file" maxOccurs="unbounded"></xsd:element>
39                         </xsd:sequence>
40                     </xsd:complexType>
41                 </xsd:element>
42             </xsd:choice>
43             <xsd:attribute name="version" type="double" use="optional"></xsd:attribute>
44         </xsd:complexType>
45     </xsd:element>
46 </xsd:schema>

内容编写:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://www.example.org/web-app_2_5" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
            version="2.5">
    <servlet>
        <servlet-name></servlet-name>
        <servlet-class></servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name></servlet-name>
        <url-pattern></url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file></welcome-file>
        <welcome-file></welcome-file>
    </welcome-file-list>
</web-app>

dom4j解析
//创建解析器对象
SAXReader sax=new SAXReader();
//加载xml文件获取dom对象
Document doc=sax.read("src/com/oracle/demo02/web.xml");
//获取根元素web-app
Element root=doc.getRootElement();
//获取servlet元素对象
Element servlet=root.element("servlet");
//获取servlet-class元素对象
Element servletclass=servlet.element("servlet-class");
//获取完整的包名+类名
String classname=servletclass.getText();
System.out.println(classname);

案例:

 1 public class Demo01 {
 2     public static void main(String[] args) throws DocumentException, ClassNotFoundException, InstantiationException, IllegalAccessException {
 3         //创建解析器对象
 4         SAXReader sax=new SAXReader();
 5         //加载xml文件获取dom对象
 6         Document doc=sax.read("src/com/oracle/demo02/web.xml");
 7         //获取根元素web-app
 8         Element root=doc.getRootElement();
 9         //获取servlet元素对象
10         Element servlet=root.element("servlet");
11         //获取servlet-class元素对象
12         Element servletclass=servlet.element("servlet-class");
13         //获取完整的包名+类名
14         String classname=servletclass.getText();
15         System.out.println(classname);
16         //反射调用myservlet中所有的方法
17         //获取字节码文件对象
18         Class c=Class.forName(classname);
19         //新对象
20         MyServlet myservlet=(MyServlet)c.newInstance();
21         myservlet.init();
22         myservlet.service();
23         myservlet.destroy();
24         
25     }
26 }

代码截图:

 

 

DTD (Document Type Definition ),文档类型定义,用来约束XML文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。

posted @ 2019-11-16 15:20  许桑  阅读(101)  评论(0编辑  收藏  举报