您好,登錄后才能下訂單哦!
1.開發工具介紹
1、開發工具
JDK
eclipse(真正開發的用的是eclipse)————IBM發布
eclipse可以添加很多的插件(添加自己需要的插件)
myeclipse已經添加了很多的插件(收費)
2、myeclipse視圖恢復最原始的樣子(重置視圖)
window--> Reset Perspective
3、切換視圖
4、創建工程導入自定義安裝的JDK
添加
5、修改快捷鍵
window--> preferences--> General--> Keys--> Content Assist--> Remove Binding
6、Junit測試
被測試的方法必須是:公共的、非靜態、無返回值、無形參
Extensible Markup Language
可擴展標記語言
XML技術是W3C組織發布的
數據存儲格式
保存和處理數據,同時保存和處理他們之間的關系
允許用戶自定義標簽,用標簽保存數據,標簽之間有層次關系
本質上是一段字符串,具有跨平臺性的特性
經常用作應用程序配置文件
4、保存了XML數據的文件就叫做xml文件,后綴名為.xml
5、XML數據也可以以其他的方式存在(如在內存中構建XML數據),不要將XML語言狹隘的理解成xml文件。
6、瀏覽器內置了XML解析器,可以使用瀏覽器對XML進行校驗
一個XML文件分為如下幾部分內容:
1、文檔聲明 <?xml version=”1.0” encoding=”GB2312” standalone=”no” ?>
聲明文檔基本屬性,包含且只包含一個文檔聲明,必須處在第一行 。
version 代表當前xml所遵循的xml標準,必須存在。
encoding告知解析器使用何種編碼解析當前xml,默認值為ISO8859-1
standalone指定當前XML文檔是否是一個獨立文檔,默認值為yes表示是一個獨立文檔
2、元素
1.<開始標簽> 標簽體 </結束標簽>
<自閉標簽/> ---> 不含標簽體也不包含其他標簽
2.有且僅有一個根標簽
3.元素的命名規范:
區分大小寫
不能以數字、標點符號、"_"開頭。
不能以XML(或XML、或Xml 等)開頭。
不能包含空格。
名稱中間不能包含冒號(:)
1.一個標簽可以有多個屬性
2.屬性的值要用單引號或雙引號括起來,屬性的之中包含雙引號,就要用單引號了。
3.命名規范,參照元素的命名規范
1.注釋不能出現在文檔聲明之前。
2.注釋不能嵌套注釋
1.都可以用來轉義特殊字符。
2.CDATA區 <![CDATA[ ]]>
<![CDATA[這是要轉義的內容]]>
被CDATA區擴起來的內容,將會被瀏覽器當作文本來處理。
3.轉義字符
& = &
< = <
> = >
" = "
' = '
4.CDATA區和轉義字符的區別
(1)CDATA區成段轉義,轉義字符一次只轉義一個字符
(2)CDATA區轉義的字符保存數據本來的格式,只是通知解析器按文本去處理。
轉義字符改變了數據本身的內容,利用其他字符替代了轉義字符。
6、處理指令 PI(processing instruction)<?xml-stylesheet type=”text/css” herf=”1.css” ?>
1.一段指令通知解析器以何種方式解析XML
指定解析器使用1.css去渲染當前的XML數據
2.文檔聲明就是一個最常見的處理指令。
編寫一個文檔來約束一個xml文檔的寫法,這稱之為XML約束。
2、XML約束的作用
約束xml文檔的寫法
對xml進行校驗
3、常見的XML約束技術
XML DTD
XML Schema
4、瀏覽器默認關閉DTD校驗
myeclipse提供校驗
5、如何在XML中引入一個DTD
(1)外部引入
1.外置的dtd文件后綴必須為.dtd,必須用utf-8編碼保存.
2.xml文件中使用
(1)<!DOCTYPE 根元素名稱 SYSTEM 文件的位置>
<!DOCTYPE 書架 SYSTEM "book.dtd">
SYSTEM表明引入的dtd,在當前文件系統中。
(2) <!DOCTYPE 文檔根結點 PUBLIC "DTD名稱" "DTD文件的URL">
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
PUBLIC表明引入的dtd,在網絡公共位置中.
(2)內部引入
直接在xml中書寫dtd
<!DOCTYPE 根元素名稱[
dtd約束....
]>
(1)元素<!ELEMENT 元素名稱 元素約束>
元素約束:可以是元素內容、或存放類型
1.存放類型:ANY/EMPTY
2.元素內容:子元素的列表
用小括號括起來
1.子元素之間可以使用逗號進行分割,表明子元素必須按照順序出現
2.子元素之間可以使用豎線進行分割,表面子元素出現其中之一
3.#PCDATA 表明包含標簽體
4. + 1次或多次
* 0次或多次
? 0次或一次
5.可以使用小括號進行組的操作
<!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>
(2)屬性
<!ATTLIST 元素名稱
屬性名1屬性值的類型整個屬性的約束
屬性名2屬性值的類型 整個屬性的約束
......
>
1.屬性值的類型:
1.CDATA: 普通字符串
2.枚舉 : 枚舉列表
<!DOCTYPE 購物籃 [
<!ELEMENT 肉 EMPTY>
<!ATTLIST 肉 品種 ( 雞肉 | 牛肉 | 豬肉 | 魚肉 ) "雞肉">
]>
3.ID: 必須唯一的,
ID 屬性的值只能由字母,下劃線開始,不能使用數字,不能出現空白字符
4.參數實體 &實體名稱
2.屬性約束:
#REQUIRED 必須存在的屬性
#IMPLIED一個可選的屬性,可有可無
#FIXED '固定值' 具有一個固定的屬性值,指定了一個不是固定值的值則校驗報錯
'默認值' 默認屬性值
<!ATTLIST 頁面作者
姓名 CDATA #IMPLIED
年齡 CDATA #IMPLIED
聯系信息 CDATA #REQUIRED
網站職務 CDATA #FIXED "頁面作者"
個人愛好 CDATA "上網" //上網為默認屬性值
>
(3)ENTITY(實體)
<!ENTITY >,就是對一大段內容的引用,可以簡化代碼的復用
引用實體:在xml中引用的實體叫做引用實體
<!ENTITY 實體名稱 “實體內容” >
在xml語句里,用&實體名稱,代替實體內容;
參數實體:在dtd中引用的實體叫做參數實體
<!ENTITY % 實體名稱 "實體內容">
在DTD語句里,用%實體名稱,代替實體內容;
利用java程序去增刪改查(CRUD)xml中的數據--> xml編程
兩種解析思想:
1.dom解析
1、將整個XML使用類似樹的結構,保存在內存中,再對其進行操作。
2、是 W3C 組織推薦的處理 XML 的一種方式。
3、需要等到XML完全加載進內存才可以進行操作
4、耗費內存,當解析超大的XML時慎用。
5、可以方便的對xml進行增刪改查操作
2.sax解析
1、逐行掃描XML文檔,當遇到標簽時觸發解析處理器,采用事件處理的方式解析。 2、(Simple API for XML) 非官方標準,但它是 XML 社區事實上的標準,幾乎所有的 XML 解析器都支持它。
3、在讀取文檔同時即可對xml進行處理,不必等到文檔加載結束,相對快捷。
4、不需要將文檔加載進內存,因此不存在占用內存的問題,可以解析超大XML。
5、只能讀取XML中數據,無法進行增刪改
利用這兩種解析思想,實現了很多的解析api
1、既有dom方式也有sax方式,
2、這套解析api已經加入到j2se的規范中,不需要導入任何第三方開發包就可以直接使用這種解析方式.但是這種解析方式效率低下,沒什么人用.
3、jaxp 的sax解析過程:
1、使用dom方式高效的解析xml.
pull
2、導入開發包,通常只需要導入核心包就可以了
3、如果在使用的過程中提示少什么包到lib目錄下在導入缺少的包即可
4.與JDOM不同的是,dom4j使用接口和抽象基類。
5.dom4j不能跨著級別查元素
6.dom4j的解析過程
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();
Element bookName = root.element("書").element("書名");
String bookNameText = bookName.getText();
System.out.println(bookNameText);
public void selc_add_update_dele() throws DocumentException, IOException{
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();
List<Element> list = root.elements();//root的直系元素,這里就是書
Element book2Ele = list.get(1);//第二本書
Element book2Name = book2Ele.element("書名");
System.out.println(book2Name.getText());
//1。創建<書>下的<特價>節點,并設置標簽體
Element bargainPrice1 = DocumentHelper.createElement("特價");
bargainPrice1.setText("40.00");
//2.獲取父標簽<書>,將<特價>節點掛上去
Element book1 = root.element("書");
book1.add(bargainPrice1);
//3.更新特價的值
bargainPrice.setText("14.00");
//4.刪除特價
bargainPrice1.getParent().remove(bargainPrice1);
//寫到文件中
XMLWriter xwr = new XMLWriter(new
FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
xwr.write(dom);
xwr.close();
}
簡介:
1、xml的約束技術 --- 需要掌握名稱空間的概念,會讀簡單的Schema就可以了
2、Schema是xml的約束技術,出現的目的是為了替代dtd
3、本身也是一個xml,非常方便使用xml的解析引擎進行解析,但它的擴展名通常為.xsd
優點:
4、對名稱空間有非常好的支持
5、支持更多的數據類型,并且支持用戶自定義數據類型
6、可以進行語義級別的限定,限定能力大大強于dtd
缺點:
7、相對于dtd不支持實體
8、相對于dtd復雜的多,學習成本比較的高
重點:
9、如何在xml中引入Schema --- !!!!!名稱空間的概念:全世界獨一無二的名字,用來唯一的標識某個資源,通常是公司的域名,只是名字而已并不真的表示資源的位置.
10、targetNamespace用于指定schema文檔中聲明的元素屬于哪個名稱空間。
11、elementFormDefault用于指定,該schema文檔中聲明的根元素及其所有子元素是否都屬于targetNamespace所指定的名稱空間。默認值為qualified,表示都屬于指定的名稱空間。若值為unqualified,表示只有根元素屬于指定名稱空間。
book.xsd文件:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace=“www.itcast.cn"
elementFormDefault="qualified">
<xs:element name='書架' >
<xs:complexType>
<xs:sequence maxOccurs='unbounded' >
<xs:element name='書' >
<xs:complexType>
<xs:sequence>
<xs:element name='書名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售價' type='xs:string' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
12、schemaLocation此屬性有兩個值。第一個值是需要使用的命名空間。第二個值是供命名空間使用的 XML schema 的位置,兩者之間用空格分隔。使用schemaLocation屬性時,也需要指定該屬性來自哪里
book.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<itcast:書架 xmlns:itcast=“www.itcast.cn”
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“www.itcast.cn book.xsd"> //約束文件真正位置
<itcast:書>
<itcast:書名>JavaScript網頁開發</itcast:書名>
<itcast:作者>張孝祥</itcast:作者>
<itcast:售價>28.00元</itcast:售價>
</itcast:書>
</itcast:書架>
~~~ Schema的語法---參照Schema的文檔,了解即可
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。