日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

xml 名称中不能包含= 字符_可扩展标记语言:XML

發(fā)布時間:2024/1/23 asp.net 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xml 名称中不能包含= 字符_可扩展标记语言:XML 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

XML技術(shù)(DOM、SAX解析XML)

1 掌握XML基本語法,命名規(guī)則

2 掌握什么是Schema,什么是DTD

3 掌握DOM解析XML

4 掌握SAX解析XML

5 掌握J(rèn)DOM解析XML

6 掌握DOM4J解析XML

首先來寫第一個簡單的XML文檔


以XML保存,打開瀏覽器,把文檔拉到地址欄。如果出現(xiàn)這種情況證明你的XML書寫是正確的。

1. XML(EXtensible Markup Language)概念和體系

(1) XML的特點(diǎn):

XML的作用:數(shù)據(jù)存儲和數(shù)據(jù)傳輸。XML的特點(diǎn):數(shù)據(jù)以純文本格式存儲、實(shí)現(xiàn)不同應(yīng)用程序之間的數(shù)據(jù)通信、實(shí)現(xiàn)不同平臺間的數(shù)據(jù)通信、實(shí)現(xiàn)不同平臺間的數(shù)據(jù)共享、使用XML將不同的程序不同的平臺之間聯(lián)系起來。

(2) 一個標(biāo)準(zhǔn)的XML文檔由什么組成?

必須要有文檔的聲明,根元素(一個文檔只能有一個根元素),根元素的子元素,文本(在xml中文本都是字符型)。

就剛剛寫的book文檔而言,books是book的父元素,book是books的子元素,XML的結(jié)構(gòu)如下,這是一顆倒掛著的樹:

2. XML基本語法:

① 有且只有一個根元素

② XML文檔聲明必須放在文檔的第一行

③ XML的標(biāo)簽必須成對出現(xiàn)

④ XML的標(biāo)簽嚴(yán)格區(qū)分小寫

⑤ XML必須正確嵌套

⑥ XML中屬性值必須加引號

⑦ XML中,一些特殊字符需要使用“實(shí)體”

⑧ XML中可以應(yīng)用適當(dāng)?shù)淖⑨?/p>

XML的命名規(guī)則:

名稱可以包含字母,數(shù)字以及其他字符。

名稱不能以數(shù)字或標(biāo)點(diǎn)符號開始,名稱不能包含空格。

3. Schema技術(shù):

(1) 什么是DTD驗(yàn)證及DTD驗(yàn)證的局限性?

DTD文檔類型定義,驗(yàn)證是否是“有效”的XML。

使用DTD的局限性:DTD不遵守XML語法、DTD數(shù)據(jù)類型有限、DTD不可擴(kuò)展、不支持命名空間。

(2) 什么Schema技術(shù)?

Schema是DTD的代替者,名稱為 XML Schema ,用于描述XML文檔結(jié)構(gòu),比DTD強(qiáng)大,最主要的特征之一就是XML Schema 支持?jǐn)?shù)據(jù)類型。

① Schema是用XML驗(yàn)證XML遵循XML的語法。

② Schema可以用作處理XML文檔的工具處理。

③ Schema大大擴(kuò)充了數(shù)據(jù)類型,而且還可以自定義數(shù)據(jù)類型。

④ Schema支持元素的繼承

4. DOM方式解析XML數(shù)據(jù)

(1) 解析XML文件的方式有哪些:

① DOM解析(官方提供)

② SAX解析(官方提供)

③ JDOM解析(第三方提供)

④ DOM4J解析(第三方提供)

(2) DOM解析XML的步驟:

① 創(chuàng)建一個DocumentBuilderFactory的對象

② 創(chuàng)建一個DocumentBuilder對象

③ 通過該DocumentBuilder的parse方法的都Document對象

④ 通過getElementsByTagName(...)方法獲取到節(jié)點(diǎn)的列表

⑤ 通過for循環(huán)遍歷每一個節(jié)點(diǎn)

⑥ 得到每個節(jié)點(diǎn)的屬性與屬性值

⑦ 得到每個節(jié)點(diǎn)的節(jié)點(diǎn)名與節(jié)點(diǎn)值

>>>使用DOM解析XML文檔(把XML中的數(shù)據(jù)讀取到Java程序中)

使用之前的book文檔Java程序:package XML;import java.io.IOException;import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException;public class TestDOMParse {public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {//創(chuàng)建一個DocumentBuilderFactory的對象DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//創(chuàng)建一個DocumentBuilder對象DocumentBuilder db = dbf.newDocumentBuilder();//通過DocumentBuilder的parse方法的到Document對象Document doc = db.parse("book.xml"); //通過getElementsByTagName方法獲取節(jié)點(diǎn)的列表NodeList bookList = doc.getElementsByTagName("book");//通過for循環(huán)遍歷每一個節(jié)點(diǎn)for(int i=0;i<bookList.getLength();i++) {//得到每一個屬性與屬相值Node book = bookList.item(i);NamedNodeMap attrs = book.getAttributes();//循環(huán)遍歷每一個屬性for(int j=0;j<attrs.getLength();j++) {//獲得每一個屬性Node id = attrs.item(j);System.out.println("屬性的名稱"+id.getNodeName()+"t"+id.getNodeValue()); } }System.out.println("n每個節(jié)點(diǎn)的名和節(jié)點(diǎn)值");//得到每一個節(jié)點(diǎn)與節(jié)點(diǎn)值for(int i=0;i<bookList.getLength();i++) {//得到每個節(jié)點(diǎn)book節(jié)點(diǎn)Node book = bookList.item(i);NodeList subNode = book.getChildNodes();System.out.println("子節(jié)點(diǎn)的個數(shù):"+subNode.getLength());//使用for循環(huán)遍歷每一book的子節(jié)點(diǎn)for(int j=0;j<subNode.getLength();j++) {Node childNode = subNode.item(j); // System.out.println(childNode.getNodeName());short type = childNode.getNodeType();//獲取節(jié)點(diǎn)的類型if (type==Node.ELEMENT_NODE) {System.out.println("節(jié)點(diǎn)的名稱:t"+childNode.getNodeName()+"t"+childNode.getTextContent());}}}} }運(yùn)行之后得到的結(jié)果是醬紫的:這時候已經(jīng)將XML文檔中的數(shù)據(jù)讀取出來了

5. SAX方式解析XML數(shù)據(jù)

(1) SAX解析方式:

SAX(Simple API for XML),是一種以事件驅(qū)動的XML API,SAX與DOM不同的是它邊掃描邊解析,

自頂向下依次解析,由于邊掃描邊解析,所以它解析XML具有速度快,占用內(nèi)存少的優(yōu)點(diǎn)。

(2) SAX解析XML的步驟:

① 創(chuàng)建SAXParserFactory的對象

② 創(chuàng)建SAXParser對象(解析器)

③ 創(chuàng)建一個DefaultHandler的子類

④ 調(diào)用parse方法

老規(guī)矩,實(shí)操一下。創(chuàng)建一個子類BookDeaultHandler繼承DefaultHandler(org.xml.sax.helpers.DefaultHandler;)是這個包下的DefaultHandlerpackage XML;import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler;public class BookDeaultHandler extends DefaultHandler {//重寫第一個方法/*解析xml文檔開始時調(diào)用*/@Overridepublic void startDocument() throws SAXException {super.startDocument();System.out.println("------解析xml文檔開始--------");}/*解析xml文檔結(jié)束時調(diào)用*/@Overridepublic void endDocument() throws SAXException {super.endDocument();System.out.println("------解析xml文檔結(jié)束--------");}/**解析xml文檔中的節(jié)點(diǎn)時調(diào)用*/@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {super.startElement(uri, localName, qName, attributes);/**判斷如果是book節(jié)點(diǎn),獲取節(jié)點(diǎn)的屬性與屬性值*/if("book".equals(qName)) {//獲取所有的屬性int count = attributes.getLength();//屬性的個數(shù)//循環(huán)獲取每個屬性for(int i=0; i<count;i++) {String attName = attributes.getQName(i);//屬性名稱String attValue = attributes.getValue(i);System.out.println("屬性名稱:"+attName+"t屬性值:"+attValue);}}else if(!"books".equals(qName)&&!"book".equals(qName)) {System.out.print("節(jié)點(diǎn)的名稱:t "+qName+"t");}}/**解析xml文檔中的節(jié)點(diǎn)結(jié)束調(diào)用*/@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {super.endElement(uri, localName, qName);}@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {super.characters(ch, start, length);String value = new String(ch,start,length);if(!"".equals(value.trim())) {System.out.println(value);}} }主程序:package XML;import java.io.IOException;import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory;import org.xml.sax.SAXException;public class TestSAXParse {public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {//創(chuàng)建SAXParserFactory的對象SAXParserFactory spf = SAXParserFactory.newInstance();//創(chuàng)建SAXParser對象(解析器)SAXParser parser = spf.newSAXParser();//創(chuàng)建一個DefaultHandler的子類BookDeaultHandler bdh = new BookDeaultHandler();//調(diào)用parse方法parser.parse("book.xml",bdh);} }運(yùn)行結(jié)果是這樣子的:

6. JDOM解析XML數(shù)據(jù)

(1) 簡述什么是JDOM?

是一種解析xml的Java工具包,它基于樹型結(jié)構(gòu),利用純Java的技術(shù)對xml文檔實(shí)現(xiàn)解析。

(2) JDOM解析XML的步驟?

① 創(chuàng)建一個SAXBuilder對象

② 調(diào)用build方法,得到Document對象(通過IO流)

③ 獲取根節(jié)點(diǎn)

④ 獲取根節(jié)點(diǎn)節(jié)點(diǎn)的直接子節(jié)點(diǎn)的集合

⑤ 遍歷集合

7. DOM4J解析XML數(shù)據(jù)

(1) 簡述DOM4J技術(shù) ?

是一個Java的XML API,是JDOM的升級品,用來讀寫XML文件。

(2) 四種解析XML技術(shù)的特點(diǎn):

① DOM解析:形成了樹結(jié)構(gòu),有助于更好的理解、掌握,且代碼容易編寫,解析過程中,樹結(jié)構(gòu)保存在內(nèi)存中,方便修改。

② SAX解析:采用事件驅(qū)動模式,對內(nèi)存消耗比較小適用于只處理XML文件中的數(shù)據(jù)。

③ JDOM解析:僅使用具體類,而不使用接口,API大量使用了Collection類。

④ DOM4J解析:是JDOM的一種智能分支,他合并了許多超出基本XML文檔表示的功能。它使用接口和抽象基本類方法。具有性能優(yōu)異、靈活性好、功能強(qiáng)大和極端易用的特點(diǎn)。是一個開放源碼的文件。

總結(jié)

以上是生活随笔為你收集整理的xml 名称中不能包含= 字符_可扩展标记语言:XML的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。