一.xml的创建以及文档声明
创建方式
1:
直接创建file
,取名为xxx
.xml
创建方式
2:
配置模板
:setting
->搜索template
->new->添加xml模板
文档声明
:写在xml文档的第一行
:(直接写会报错
,因为每个xml都要有一个根标签
)
<?xml version
="1.0" encoding
="UTF-8"?>
二.xml的注释
<!--
注释
-->
三.xml的组成部分之标签(元素)以及注意事项
<?xml version="1.0" encoding="UTF-8" ?>
标签中套标签
3.注意事项:
a.标签名区分大小写
b.标签不能有空格 :
c.不建议以XML、xml、Xml开头,不要以数字开头
d.一个良好的xml文档,都会有一个根标签
-->
<persons>
<user>
<name>
</name>
</user>
</persons>
四.xml的标签属性定义以及注意事项
<?xml version="1.0" encoding="UTF-8" ?>
<persons id="001" name="jack">
<user username="username">用户
</user>
</persons>
五.xml中的转义字符
<?xml version="1.0" encoding="UTF-8" ?>
<persons>
1
<5?1:5;
</persons>
六.xml中的xml文档约束
虽然
,xml中的标签可以随便写
,但是我们开发中也不能随便写
,因为我们是一个团队
,如果每个人都写自己喜欢的标签
,那么我们整合的时候
,就会出现问题
,所以
,以后开发编写xml是需要文档约束的
.
常见的xml约束有
:dtd
,schema
七.根据DTD约束编写xml文档
直接粘贴dtd文件,粘贴一以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT beans (bean*,import*) >
<!ELEMENT bean (property*)>
<!ELEMENT property (#PCDATA)>
<!ELEMENT import (#PCDATA)>
<!ATTLIST bean id CDATA #REQUIRED
className CDATA #REQUIRED
type CDATA #IMPLIED
>
<!ATTLIST property name CDATA #REQUIRED
value CDATA #REQUIRED
>
<!ATTLIST import resource CDATA #REQUIRED>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans SYSTEM "bean.dtd">
<beans>
<bean id="001" className="name">
<property name="taoge" value="13"></property>
</bean>
<bean id="001" className="name">
<property name="taoge" value="13"></property>
</bean>
<import resource="name"></import>
<import resource="name"></import>
</beans>
八.DTD约束阅读
各部分解释
:
DOCTYPE
:文档类型
beans
:根标签
SYSTEM
:本地系统文件
"bean.dtd":产生关系的文件名
bean
*:可以写多个bean标签
(bean
*,import*):,表示标签顺序
#PCDATA
:此标签体中应该是文本
CDATA
:代表的是标签中的属性值为字符型
#REQUIRED:属性值必须设置
九.schema约束介绍
Schema是新的XML文档约束;
Schema要比DTD强大很多,是DTD 替代者;
Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml。
Schema 功能更强大,数据类型更完善
Schema 支持名称空间
十.命名空间的介绍(相当于导包)
平时我们new Date的时候,需要导 java.util.Date
但是java.sql.Date中也有Date,如果是sql包的Date,我们需要new Date(1L)
那么命名空间就相当于导包,能够明确我们使用的是哪个约束文件中的内容
十一.根据Schema约束编写xml文件
1.直接粘贴schema约束文档
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn/bean"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.itcast.cn/bean"
elementFormDefault="qualified">
<element name="beans">
<complexType>
<choice minOccurs="0" maxOccurs="unbounded">
<element name="bean">
<complexType>
<sequence minOccurs="0" maxOccurs="unbounded">
<element name="property">
<complexType>
<attribute name="name" use="optional"></attribute>
<attribute name="value" use="required"></attribute>
</complexType>
</element>
</sequence>
<attribute name="id" use="required"></attribute>
<attribute name="className" use="required"></attribute>
</complexType>
</element>
<element name="import">
<complexType>
<attribute name="resource" use="required"></attribute>
</complexType>
</element>
</choice>
</complexType>
</element>
</schema>
根据Schema约束编写xml
:
<?xml version
="1.0" encoding
="UTF-8" ?>
<beans xmlns
="http://www.itcast.cn/bean"
xmlns
:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi
:schemaLocation
="http://www.itcast.cn/bean bean-schema.xsd"
>
<!--
xmlns
="约束文档的命名空间的名字" W3C万维网联盟
, 名字必须做到全球唯一性
(互联网地址
)
bean是我们自定义的文件名
,不用的文件可以取不同的名字
xmlns
:xsi
="地址"是W3C的官方约束文档
xsi
:schemaLocation
="属性值标明了约束文档的位置所在"
http
://www
.itcast
.cn
/bean 命令空间的名字和第一个xmlns对应
bean
-schema
.xsd 是约束文档的路径和文件名
-->
<bean id
="001" className
="taoge">
<property value
="haha"></property
>
</bean
>
<import resource
="root"></import>
</beans
>
十二.dom4j解析器的核心API介绍
* 使用DOM思想
,读取xml文件
* 介绍dom4j 核心类
* 1: SAXReader DOM解析思想的核心类
* 方法
: read(绑定了这个xml文件的输入流
) 读取xml文件
* 返回文档对象
,返回值是Document对象
*
* 2: Document对象
* 方法
: getRootElement()获取文档的根标签
* 返回值
,返回的是标签对象 Element
*
* 3:Element标签对象
* 方法获取子标签 List
<Element> elements()
* 返回所有的子标签集合List
*
* 方法 String
attributeValue(String 属性名
) 获取属性值
* 方法 String
getText() 获取到的是
,标签体的文本部分
十三.利用dom4j解析xml文档代码实现(将xml文件放在src下面)
1.创建person.xml
<?xml version="1.0" encoding="UTF-8" ?>
<beans>
<bean id="001" className="cn.itcast.demo.person">
<property name="user" value="jack">杰克
</property>
<property name="user" value="rose">肉丝
</property>
</bean>
<bean id="002" className="cn.itcast.demo.Admin">
<property name="user" value="admin">管理员
</property>
<property name="user" value="write">怀特
</property>
</bean>
</beans>
2.解析
:
public class Test01_Dom4J {
public static void main(String
[] args
) throws Exception
{
InputStream inputStream
=
Test01_Dom4J
.class.getClassLoader().getResourceAsStream("person.xml");
SAXReader saxReader
= new SAXReader();
Document document
= saxReader
.read(inputStream
);
Element rootElement
= document
.getRootElement();
List
<Element> elements
= rootElement
.elements();
for (Element beanElement
: elements
) {
String id
= beanElement
.attributeValue("id");
String className
= beanElement
.attributeValue("className");
System
.out
.println(id
+"..."+className
);
List
<Element> elements1
= beanElement
.elements();
for (Element element
: elements1
) {
String name
= element
.attributeValue("name");
String value
= element
.attributeValue("value");
String text
= element
.getText();
System
.out
.println(name
+".."+value
+".."+text
);
}
}
}
}
十四.使用xpath查找xml中的内容代码实现
创建student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student number="heima_0001">
<name id="itcast">
<xing>张
</xing>
<ming>三
</ming>
</name>
<age>18
</age>
<sex>nan
</sex>
</student>
<student number="heima_0002">
<name>jack
</name>
<age>18
</age>
<sex>nv
</sex>
</student>
</students>
public class Demo01_Xpath {
public static void main(String
[] args
)throws Exception
{
InputStream inputStream
=
Demo01_Xpath
.class.getClassLoader().getResourceAsStream("student.xml");
SAXReader saxReader
= new SAXReader();
Document document
= saxReader
.read(inputStream
);
Element rootElement
= document
.getRootElement();
List
<Node> list
= rootElement
.selectNodes("/students/student/age");
System
.out
.println(list
);
Element element
= (Element
) rootElement
.selectSingleNode("//sex");
System
.out
.println(element
.getText());
List
<Node> list1
= rootElement
.selectNodes("//name[@id]");
System
.out
.println(list1
.size());
}
}