一:为什么使用Xml?
1.目前有很多的写代码语言,java,scala,sql,py等等语言。也有很多的系统,例如苹果系统,安卓系统等。但是实际生产中,我们代码和数据,在各个平台和语言之间进行流动。如果我们想在流动的中间做一些操作,我们需要有一种共性的东西,在各个语言中都适用,在各个平台之间都能跑通。
二:什么是Xml?
- 是一种语言。
- xml与操作系统、编程语言的开发平台都无关。
- 实现不同系统之间的数据交互。
三:怎么使用Xml?
- 最基本的信息。
(1)必须有XML声明语句 (第一行)。
(2)必须有且仅有一个根元素。
(3)标签成对。
(4)元素正确嵌套 。 - 标签、元素、属性
标签,在xml中使用<>,引起来的内容称作为标签。标签有开头有结尾,结尾多一个/。
属性,属性为标签增添了一些信息,形式为 属性名=“属性值”。
元素,标签开始和结尾为一个整体,统一称为元素。 - 注意点
(1)特殊字符。
(2)CDATA
PCDATA 是被解析的字符,CDATA是没有被解析的字符。CDATA具体使用如下:
<test>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</test>
- 约束。
虽然xml非常灵活,但是我们在开发过程中,可以设定一些约束,来方便整个团队的开发。常见的约束有以下俩种。
(1)DTD约束
我们一般约束以下几点
元素的定义规则
元素之间的关系规则
属性的定义规则
<!DOCTYPE 根元素 [元素声明]>
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE poem [
<!ELEMENT poem (author,title,content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>
</poem>
(2)Schema约束
如果DTD约束写的信息比较繁琐,那么我们使用Scahme进行约束。
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.myschema.com.cn"
xmlns="http://www.myschema.com.cn"
elementFormDefault="qualified">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="sex" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
- 解析。
DOM4J
添加jar包
<?xml version="1.0" encoding="utf-8" ?>
<students>
<Student>
<Name>张三</Name>
<Num>2018001</Num>
<Classes>0113</Classes>
<Address>上海外国语</Address>
<Tel>123456</Tel>
</Student>
<Student>
<Name>王五</Name>
<Num>2018002</Num>
<Classes>0114</Classes>
<Address>上海外国语</Address>
<Tel>657432</Tel>
</Student>
</students>
public static void main(String[] args) throws Exception{
SAXReader reader=new SAXReader();
Document document=reader.read(newFile("src\\source.xml"));
ElementrootElm=document.getRootElement();//获得根节点
ElementmemberElm=rootElm.element("Student"); //获得子节点
ElementageElm=memberElm.addElement("age");//添加子节点
ageElm.setText("29");//设置节点文本
// 创建格式化类
OutputFormat format =OutputFormat.createPrettyPrint();
// 设置编码格式,默认UTF-8
format.setEncoding("UTF-8");
// 创建输出流,此处要使用Writer,需要指定输入编码格式,使用OutputStream则不用
FileOutputStream fos = new FileOutputStream("src\\source.xml");
// 创建xml输出流
XMLWriter writer = new XMLWriter(fos,format);
writer.write(document);
writer.close();
}