一、XML(EXtendsible Markup Language):可擴(kuò)展標(biāo)記語言 可理解為:xml是描述數(shù)據(jù)的語言
1.特點:xml與操作系統(tǒng)陷谱、編程語言的開發(fā)平臺無關(guān)
2.作用:a.實現(xiàn)不同平臺之間的數(shù)據(jù)交互.
b.實現(xiàn)服務(wù)器(S)與客戶端(B)之間的數(shù)據(jù)交互---->Json技術(shù)
c.充當(dāng)應(yīng)用程序配置文件
d.充當(dāng)xml文件型的數(shù)據(jù)庫
二、編寫一個格式規(guī)范的xml文檔(xml文件擴(kuò)展名:.xml)
1.xml文檔需要有聲明
<?xml version="10" encoding="utf-8"?>
2.xml文檔必需要有根元素
<根元素>文檔主體部分</根元素>
3.編寫xml的注意事項
a.xml標(biāo)簽成對出現(xiàn)且區(qū)分大小寫
b.xml標(biāo)簽正確嵌套
c.xml元素名不能有特殊字符(java變量的規(guī)范)
d.不能出現(xiàn)特殊字符(如:< > ...)
<!CDATA[ 將特列字符當(dāng)作內(nèi)容:<age>21</age> ]]>
4.驗證xml文件
驗證的目錄:驗證出現(xiàn)哪元素、元素出現(xiàn)的順序、元素出現(xiàn)的屬性皱埠、屬性值|元素值的類型
實現(xiàn)xml文件的驗證:DTD,Schema
三、使用xml文件(充當(dāng)數(shù)據(jù)庫) 存多名學(xué)生信息
<?xml version="1.0" encoding="UTF-8"?>
<stulist> 理解表
<student> 理解表中的行
<xh>101</xh> 理解中列
<name>張三</name>
<age>21</age>
<address>湖北武漢</address>
</student>
<student>
<xh>102</xh>
<name>李四</name>
<age>21</age>
<address>湖北武漢</address>
</student>
......
</stulist>
四(重點):java程序解析xml文件
1.解析xml文件的技術(shù):dom解析(基于樹狀結(jié)構(gòu)解析)咖驮、sax解析(基于事件)漱逸、dom4j解析
2.使用DOM4J解析
2.1 術(shù)語:
Docuemnt 表示xml文檔
Element 定義xml文檔中的元素
Attribute 定xml的元素的屬性
Text 表示xml文檔的內(nèi)容
3.解析xml文件的步驟
//1.導(dǎo)入dom4j的jar包
//將dom4j的jar包復(fù)制到項目的lib文件夾,再在右鍵jar包添加到構(gòu)建路徑
try {
//2.獲取解析xml文件的路徑
String path=System.getProperty("user.dir"); //獲取項目目錄
String filePath=path+"\\src\\studnets.xml";
//3.使用SAXReader對象讀取xml文件(將xml文件轉(zhuǎn)化為Document)
SAXReader reader=new SAXReader();
Document document=reader.read(filePath);
//4.獲取文檔根元素
Element root=document.getRootElement();
//5.操作xml文檔內(nèi)容
//5.1獲取元素名稱
//System.out.println("元素名稱:"+root.getName());
//5.2獲取元素內(nèi)容
//System.out.println("元素內(nèi)容:"+root.getText());
//5.3獲取元素的所有子標(biāo)簽
List<Element> childs=root.elements();
for (Element stu : childs) {
/*
List<Element> infos=stu.elements();
System.out.print("姓名:");
System.out.print(infos.get(0).getText());
System.out.print("年齡:");
System.out.print(infos.get(1).getText());
System.out.print("地址:");
System.out.print(infos.get(2).getText());
System.out.println();*/
//操作屬性
//List<Attribute> attris=stu.attributes(); //所有屬性
//System.out.println(attris.get(0).getValue()); //獲取某屬性的值
String v=stu.attributeValue("xh"); //獲取無素某屬性的值
System.out.print("學(xué)號:"+v);
//通過子元素名取值
System.out.print("姓名是:"+stu.elementText("name"));
System.out.print("年齡是:"+stu.elementText("age"));
System.out.print("地址是:"+stu.elementText("address"));
System.out.println();
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}