一.什么是格式良好的XML
数据交互
返记录
{name:张三,age:20,sex:男,money:1000,time:20210728}
{name:李四,age:21,sex:男,money:1000,time:20210728}
{name:王五,age:22,sex:男,money:1000,time:20210728}
XML数据传递
报文
2016之前数据的传递方式
soupui、wsdl、webservice、
<user>
<info></>
<name>张三</name>
<age>20</age>
<sex>男</sex>
<money>1000</money>
<time>20210728</time>
</info>
<info></>
<name>李四</name>
<age>21</age>
<sex>男</sex>
<money>1000</money>
<time>20210728</time>
</info>
<info></>
<name>王五</name>
<age>22</age>
<sex>男</sex>
<money>1000</money>
<time>20210728</time>
</info>
</user>
只能有一个根元素“persons” ,标签区分大小写 ,正确使用结束标签“/” ,正确嵌套标签,使用合法标签名。
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>
二.元素定义
小写单词转大写 Ctrl+shift+x
元素限制
与( , ) 或者( | ) 0或1( ? ) 0-N( * ) 1-N( + ) (男|女)'男' 默认为男
注意:只有type 为(男|女)类型时,desc才可以用默认值方式
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD约束 -->
<!DOCTYPE persons [
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone?,email?)>
<!ELEMENT br EMPTY>
]>
<persons>
<person>
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>
三.属性定义
1:<ELEMENT element-name EMPTY>------空元素
2:<ELEMENT element-name (#PCDATA)>------文本元素
3:<ELEMENT element-name (X,X)>------混合元素
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD约束 -->
<!DOCTYPE persons [
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone?,email?)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
sex (男|女)'男'
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]>
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2" sex="男">
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>
四.例题
1:用dtd限制servlet相关标签
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app [
<!ELEMENT web-app (servlet*,servlet-mapping*)>
<!ELEMENT servlet (servlet-name,servlet-class)>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+)>
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
]>
<web-app>
<servlet>
<servlet-name>jrebelServlet</servlet-name>
<servlet-class>com.zking.xml.JrebelServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>jrebelServlet2</servlet-name>
<servlet-class>com.zking.xml.JrebelServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jrebelServlet</servlet-name>
<url-pattern>/jrebelServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jrebelServlet2</servlet-name>
<url-pattern>/jrebelServlet2</url-pattern>
<url-pattern>/jrebelServlet3</url-pattern>
</servlet-mapping>
</web-app>
2:用dtd限制config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config [
<!ELEMENT config (action+)>
<!ELEMENT action (forward+)>
<!ELEMENT forward EMPTY>
<!ATTLIST action
type CDATA #IMPLIED
path CDATA #IMPLIED
>
<!ATTLIST forward
name CDATA #IMPLIED
path CDATA #IMPLIED
redirect (true|false) 'true'
>
]>
<config>
<action path="/registerAction" type="test.action.RegisterAction">
<forward name="success" path="/index.jsp" redirect="true" />
<forward name="failed" path="/register.jsp" redirect="false" />
</action>
<action path="/loginAction" type="test.action.LoginAction">
<forward name="a" path="/index.jsp" redirect="false" />
<forward name="b" path="/welcome.jsp" redirect="true" />
</action>
</config>