『壹』 常見的xml解析技術
有DOM,最常用的,在什麼腳本語言里都好用,缺點是:佔用內存大;
還有JDOM,還可以,在JAVA中用的,也算的上是JAVA專用的,學JAVA用這個好;
在就是SAX,根據事件觸發原理用的,具體不太清楚
『貳』 關於xml技術
xml
是eXtensible Markup Language的縮寫。擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML佔用的空間比二進制數據要佔用更多的空間,但XML極其簡單易於掌握和使用。
XML與Access,Oracle和SQL Server等資料庫不同,資料庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,XML僅僅是展示數據。事實上XML與其他數據表現形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優點,但正是這點使XML與眾不同。
XML的簡單使其易於在任何應用程序中讀寫數據,這使XML很快成為數據交換的唯一公共語言,雖然不同的應用軟體也支持其它的數據交換格式,但不久之後他們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS, Linux以及其他平台下產生的信息結合,然後可以很容易載入XML數據到程序中並分析他,並以XML格式輸出結果。
XML的前身是SGML(The Standard Generalized Markup Language),是自IBM從60年代就開始發展的GML(Generalized Markup Language)
同HTML一樣, XML (可擴展標識語言)是通用標識語言標准(SGML)的一個子集,它是描述網路上的數據內容和結構的標准。盡管如此,XML不象HTML,HTML僅僅提供了在頁面上顯示信息的通用方法(沒有上下文相關和動態功能) ,XML則對數據賦予上下文相關功能,它繼承了SGML的大部分功能,卻使用了不太復雜的技術。.
為了使得SGML顯得用戶友好,XML重新定義了SGML的一些內部值和參數,去掉了大量的很少用到的功能,這些繁雜的功能使得SGML在設計網站時顯得復雜化。XML保留了SGML的結構化功能,這樣就使得網站設計者可以定義自己的文檔類型,XML同時也推出一種新型文檔類型,使得開發者也可以不必定義文檔類型。
因為XML是W3C制定的,XML的標准化工作由W3C的XML工作組負責,該小組成員由來自各個地方和行業的專家組成,他們通過email交流對XML標準的意見,並提出自己的看法 (www.w3.org/TR/WD-xml)。因為XML 是個公共格式, (它不專屬於任何一家公司),你不必擔心XML技術會成為少數公司的盈利工具,XML不是一個依附於特定瀏覽器的語言
XML(可擴展標記語言)是從稱為SGML(標准通用標記語言)的更加古老的語言派生出來的。SGML的主要目的是定義使用標簽來表示數據的標記語言的語法。
標簽由包圍在一個小於號(<)和一個大於號(>)之間的文本組成,例如<tag>。起始標簽(start tag)表示一個特定區域的開始,例如<start>;結束標簽(end tag)定義了一個區域的結束,除了在小於號之後緊跟著一個斜線(/)外,和起始標簽基本一樣,例如</end>。SGML還定義了標簽的特性(attribute),它們是定義在小於號和大於號之間的值,例如<img src="picture.jpg">中的src特性。如果你覺得它看起來很熟悉的話,應該知道,基於SGML的語言的最著名實現就是原始的HTML。
SGML常用來定義針對HTML的文檔類型定義(DTD),同時它也常用於編寫XML的DTD。SGML的問題就在於,它允許出現一些奇怪的語法,這讓創建HTML的解析器成為一個大難題:
q 某些起始標簽不允許出現結束標簽,例如HTML中<img>標簽。包含了結束標簽就會出現錯誤。
q 某些起始標簽可以選擇性出現結束標簽或者隱含了結束標簽,例如HTML中<p>標簽,當出現另一個<p>標簽或者某些其他標簽時,便假設在這之前有一個結束標簽。
q 某些起始標簽要求必須出現結束標簽,例如HTML中<script>標簽。
q 標簽可以以任何順序嵌套。即使結束標簽不按照起始標簽的逆序出現也是允許的,例如,<b>This is a <i> sample </b> string</i>是正確的。
q 某些特性要求必須包含值,例如<img src="picture.jpg">中的src特性。
q 某些特性不要求一定有值,例如<td nowrap>中的nowrap特性。
q 定義特性的兩邊有沒有加上雙引號都是可以的,所以<img src="picture.jpg">和<img src=picture.jpg>都是允許的。
這些問題使建立一個SGML語言的解析器變成了一項艱巨的任務。判斷何時應用以上規則的困難導致了SGML語言的定義一直停滯不前。以這些問題作為出發點,XML逐漸步入我們的視野。
XML去掉了之前令許多開發人員頭疼的SGML的隨意語法。在XML中,採用了如下的語法:
q 任何的起始標簽都必須有一個結束標簽。
q 可以採用另一種簡化語法,可以在一個標簽中同時表示起始和結束標簽。這種語法是在大於符號之前緊跟一個斜線(/),例如<tag />。XML解析器會將其翻譯成<tag></tag>。
q 標簽必須按合適的順序進行嵌套,所以結束標簽必須按鏡像順序匹配起始標簽,例如<b>this is a <i>sample</i> string</b>。這好比是將起始和結束標簽看作是數學中的左右括弧:在沒有關閉所有的內部括弧之前,是不能關閉外面的括弧的。
q 所有的特性都必須有值。
q 所有的特性都必須在值的周圍加上雙引號。
這些規則使得開發一個XML解析器要簡便得多,而且也除去了解析SGML中花在判斷何時何地應用那些奇怪語法規則上的工作。僅僅在XML出現後的前六年就衍生出多種不同的語言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同時也將HTML改進為XHTML。
如果需要關於SGML和XML具體技術上的對比,請查看W3C的註解,位於:http://www.w3. org/TR/NOTE-sgml-xml.html
如今,XML已經是世界上發展最快的技術之一。它的主要目的是使用文本以結構化的方式來表示數據。在某些方面,XML文件也類似於資料庫,提供數據的結構化視圖。這里是一個XML文件的例子:
每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,<?xml version="1.0"?>。這一行代碼會告訴解析器和瀏覽器,這個文件應該按照前面討論過的XML規則進行解析。第二行代碼,<books>,則是文檔元素(document element),它是文件中最外面的標簽(我們認為元素(element)是起始標簽和結束標簽之間的內容)。所有其他的標簽必須包含在這個標簽之內來組成一個有效的XML文件。XML文件的第二行並不一定要包含文檔元素;如果有注釋或者其他內容,文檔元素可以遲些出現。
範例文件中的第三行代碼是注釋,你會發現它與HTML中使用的注釋風格是一樣的。這是XML從SGML中繼承的語法元素之一。
頁面再往下的一些地方,可以發現<desc>標簽里有一些特殊的語法。<![CDATA[ ]]>代碼用於表示無需進行解析的文本,允許諸如大於號和小於號之類的特殊字元包含在文本中,而無需擔心破壞XML的語法。文本必須出現在<![CDATA[和]]>之間才能合適地避免被解析。這樣的文本稱為Character Data Section,簡稱CData Section。
下面的一行就是在第二本書的定義之前的:
<?page render multiple authors ?>
雖然它看上去很像XML序言,但實際上是一種稱為處理指令(processing instruction)的不同類型的語法。處理指令(以下簡稱PI)的目的是為了給處理頁面的程序(例如XML解析器)提供額外的信息。PI通常情況下是沒有固定格式的,唯一的要求是緊隨第一個問號必須至少有一個字母。在此之後,PI可以包含除了小於號和大於號之外的任何字元串序列。
最常見的PI是用來指定XML文件的樣式表:
這個PI一般會直接放在XML序言之後,通常由Web瀏覽器使用,來將XML數據以特殊的樣式顯示出來。
如果你對XML感興趣,想學習更多關於它及其應用的內容,請參見人民郵電出版社即將出版的《XML與DOM基礎教程》。
『叄』 對xml的理解,java解析xml的技術有哪些
利用以下工具都可以實現對xml
文件的解析
,dom4j,
jdom,
sax,dom
如果是在java程序中解析xml文件,主要使用dom4j和jdom,dom4j用的比較多,諸多mvc框架及orm框架都是使用dom4j來解析xml文件的。
dom
方式則和語言無關的xml文件操作的國際標准。
『肆』 解析xml文件的幾種技術
.DOM生成和解析XML文檔
為 XML 文檔的已解析版本定義了一組介面。解析器讀入整個文檔,然後構建一個駐留內存的樹結構,然後代碼就可以使用 DOM
介面來操作這個樹結構。優點:整個文檔樹在內存中,便於操作;支持刪除、修改、重新排列等多種功能;缺點:將整個文檔調入內存(包括無用的節點),浪費時間和空間;使用
場合:一旦解析了文檔還需多次訪問這些數據;硬體資源充足(內存、CPU)。
2.SAX生成和解析XML文檔
為解決DOM的問題,出現了SAX。SAX
,事件驅動。當解析器發現元素開始、元素結束、文本、文檔的開始或結束等時,發送事件,程序員編寫響應這些事件的代碼,保存數據。優點:不用事先調入整個文檔,佔用資
源少;SAX解析器代碼比DOM解析器代碼小,適於Applet,下載。缺點:不是持久的;事件過後,若沒保存數據,那麼數據就丟了;無狀態性;從事件中只能得到文本,但不知該文
本屬於哪個元素;使用場合:Applet;只需XML文檔的少量內容,很少回頭訪問;機器內存少;
3.DOM4J生成和解析XML文檔
DOM4J 是一個非常非常優秀的Java XML
API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟體。如今你可以看到越來越多的 Java 軟體都在使用 DOM4J 來讀寫
XML,特別值得一提的是連 Sun 的 JAXM 也在用 DOM4J。
4.JDOM生成和解析XML
為減少DOM、SAX的編碼量,出現了JDOM;優點:20-80原則,極大減少了代碼量。使用場合:要實現的功能簡單,如解析、創建等,但在底層,JDOM還是使用SAX(最常用)、DOM、
Xanan文檔。
XML文檔定義有幾種形式?它們之間有何本質區別?解析XML文檔有哪幾種方式?
答:a: 兩種形式 dtd schema,b: 本質區別:schema本身是xml的,可以被XML解析器解析(這也是從DTD上發展schema的根本目的),c:有DOM,SAX,STAX等
DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構佔用的內存較多,而且DOM必須在解析文件之前把整個文檔裝入內存,適合對XML的
隨機訪問
SAX:不現於DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發一個
事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問
我之前好像買過相關的課程~ 我找找看
『伍』 Xml方面xml有哪些解析技術
dom解析,sax解析
jdom解析,dom4j解析
主要這四個,後兩個是在sax基礎上的,後兩個比較常用,效率高點
『陸』 xml有那些解析技術,區別是什麼
sax主要優勢在於讀取大段xml時速度較快,在寫xml時,底層調用的同樣是dom
開源比較常用的是dom4j 和Jdom
在xml解析定位上jdom的xpath(關於xpath具體你可以到網上找找相關文章)使 用簡單方便。個人比較推薦用這個。
『柒』 java項目中一般需要用到xml技術的哪些方面
XML的主要作用有兩個方面:數據交換和信息配置。在做數據交換時,XML將數據用標簽組裝成起來,然後壓縮打包加密後通過網路傳送給接收者,接收解密與解壓縮後再從XML文件中還原相關信息進行處理,XML曾經是異構系統間交換數據的事實標准,但此項功能幾乎已經被JSON(JavaScript Object Notation)取而代之。當然,目前很多軟體仍然使用XML來存儲配置信息,我們在很多項目中通常也會將作為配置信息的硬代碼寫在XML文件中,Java的很多框架也是這么做的,而且這些框架都選擇了dom4j作為處理XML的工具,因為Sun公司的官方API實在不怎麼好用。
補充:現在有很多時髦的軟體(如Sublime)已經開始將配置文件書寫成JSON格式,我們已經強烈的感受到XML的另一項功能也將逐漸被業界拋棄。
『捌』 xml是什麼意思
XML是一種格式,XML的前身是標准通用標記語言,是自IBM從60年代就開始發展的通用標記語言。它是一種簡單的數據存儲語言。
使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然可擴展標記語言佔用的空間比二進制數據要佔用更多的空間,但可擴展標記語言極其簡單易於掌握和使用。
XML的宗旨傳輸數據的,而與其同屬標准通用標記語言的HTML主要用於顯示數據。事實上XML與其他數據表現形式最大的不同是:它極其簡單。
XML的示例:
1、可以在可擴展標記語言文件的內容包括幾乎所有的萬國碼Unicode字元,元素和屬性的名稱也可以由非ascii字元組成。
2、標簽由小於號(<)和大於號(>)之間的文本組成,例如< tag >。
3、starttag(外語:starttag)表示一個特定區域的開始,例如< start >。
4、 結束標記(外語:end tag)定義了欄位的結束,它基本上與開始標記相同,只是小於號後面有一個斜杠(/)。例如,< !——結束- - - >。
『玖』 java面試題,XML包括哪些解釋技術,區別是什麼
xml有哪些解析技術?區別是什麼?
答:有DOM,SAX,STAX等
DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構佔用的內存較多,而且DOM必須在解析文件之前把整個文檔裝入內存,適合對XML的隨機訪問SAX:不現於DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問
STAX:Streaming API for XML (StAX)