中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

XML語法與約束

發布時間:2020-09-02 12:30:16 來源:網絡 閱讀:374 作者:yayaAA 欄目:開發技術

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測試

 被測試的方法必須是:公共的、非靜態、無返回值、無形參

 

2.xml概述

1XML

Extensible Markup Language

可擴展標記語言

XML技術是W3C組織發布的

數據存儲格式

2、作用

保存和處理數據,同時保存和處理他們之間的關系

允許用戶自定義標簽,用標簽保存數據,標簽之間有層次關系

3、特點

本質上是一段字符串,具有跨平臺性的特性

經常用作應用程序配置文件

 

4、保存了XML數據的文件就叫做xml文件,后綴名為.xml

5、XML數據也可以以其他的方式存在(如在內存中構建XML數據),不要將XML語言狹隘的理解成xml文件。

6、瀏覽器內置了XML解析器,可以使用瀏覽器對XML進行校驗

3.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 )開頭。

        不能包含空格。

        名稱中間不能包含冒號(:

 

3、屬性 

1.一個標簽可以有多個屬性

2.屬性的值要用單引號或雙引號括起來,屬性的之中包含雙引號,就要用單引號了。

3.命名規范,參照元素的命名規范

 

4、注釋  

1.注釋不能出現在文檔聲明之前。

2.注釋不能嵌套注釋

 

5CDATA區 、轉義字符  

1.都可以用來轉義特殊字符。

    2.CDATA區  <![CDATA[    ]]>

    <![CDATA[這是要轉義的內容]]>

        CDATA區擴起來的內容,將會被瀏覽器當作文本來處理。

    3.轉義字符

         =  &

         <

         =  >

         =  "

        = '

    4.CDATA區和轉義字符的區別

    (1)CDATA區成段轉義,轉義字符一次只轉義一個字符

    (2)CDATA區轉義的字符保存數據本來的格式,只是通知解析器按文本去處理。

       轉義字符改變了數據本身的內容,利用其他字符替代了轉義字符。

     

 

6、處理指令 PIprocessing instruction<?xml-stylesheet type=text/css herf=1.css ?>

1.一段指令通知解析器以何種方式解析XML

指定解析器使用1.css去渲染當前的XML數據

2.文檔聲明就是一個最常見的處理指令。

4.DTD1

1、什么是XML約束?

編寫一個文檔來約束一個xml文檔的寫法,這稱之為XML約束。

 

2XML約束的作用

約束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約束....

      ]>

 


5.DTD2

(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語句里,用%實體名稱,代替實體內容;

6.兩種解析思想

利用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中數據,無法進行增刪改

7.sax解析_dom4j解析入門

利用這兩種解析思想,實現了很多的解析api

1. sun jaxp

1、既有dom方式也有sax方式,

2、這套解析api已經加入到j2se的規范中,不需要導入任何第三方開發包就可以直接使用這種解析方式.但是這種解析方式效率低,沒什么人用.

3jaxp sax解析過程:

    SAXParserFactory factory = SAXParserFactory.newInstance();

    SAXParser parser = factory.newSAXParser();

    XMLReader reader = parser.getXMLReader();

    reader.setContentHandler(new MyContentHandler2());  //注冊事件處理器

    reader.parse("book.xml");

 

1.dom4j ------你所應該知道的Dom4J.doc

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);

 

8.dom4j進行增刪改查

    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();

    }

 

9.Schema之名稱空間

簡介:

1xml的約束技術  --- 需要掌握名稱空間的概念,會讀簡單的Schema就可以了

2Schemaxml的約束技術,出現的目的是為了替代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"

    XML語法與約束  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>

     

    

12schemaLocation此屬性有兩個值。第一個值是需要使用的命名空間。第二個值是供命名空間使用的 XML schema 的位置,兩者之間用空格分隔。使用schemaLocation屬性時,也需要指定該屬性來自哪里

 

book.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>

    XML語法與約束 

    <itcast:書架 xmlns:itcast=www.itcast.cn

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation=www.itcast.cn  book.xsd">  //約束文件真正位置

    XML語法與約束 

    <itcast:>

    <itcast:書名>JavaScript網頁開發</itcast:書名>

    <itcast:作者>張孝祥</itcast:作者>

    <itcast:售價>28.00</itcast:售價>

    </itcast:>

    </itcast:書架>

     

     

    ~~~ Schema的語法---參照Schema的文檔,了解即可

 



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钦州市| 宜兴市| 紫金县| 合江县| 彭阳县| 南开区| 雷山县| 平顶山市| 曲阜市| 巴南区| 张北县| 安岳县| 土默特右旗| 济阳县| 布拖县| 宝坻区| 深泽县| 新平| 邯郸市| 瑞昌市| 西林县| 泸西县| 沽源县| 松溪县| 正定县| 吴旗县| 吴川市| 静安区| 平顺县| 彝良县| 赤壁市| 玉屏| 巴东县| 革吉县| 林州市| 遵化市| 湖南省| 关岭| 霍州市| 隆化县| 普兰县|