導航:首頁 > 源碼編譯 > xml源碼詳解

xml源碼詳解

發布時間:2022-04-27 12:35:41

❶ 對xml的理解,java解析xml的技術有哪些

1.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文件的幾種技術

.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(eXtensible Markup Language)即可擴展標記語言,它與HTML一樣,都是處於SGML,標准通用語言。Xml是Internet環境中跨平台的,依賴於內容的技術,是當前處理結構化文檔信息的有力工具。擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML佔用的空間比二進制數據要佔用更多的空間,但XML極其簡單易於掌握和使用。

XML與Access,Oracle和SQL Server等資料庫不同,資料庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,XML僅僅是展示數據。事實上XML與其他數據表現形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優點,但正是這點使XML與眾不同。

XML的簡單使其易於在任何應用程序中讀寫數據,這使XML很快成為數據交換的唯一公共語言,雖然不同的應用軟體也支持其它的數據交換格式,但不久之後他們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS, Linux以及其他平台下產生的信息結合,然後可以很容易載入XML數據到程序中並分析他,並以XML格式輸出結果。

❹ C#解析xml文件源代碼

很高興可以給你解答!
xml實際就是一個本地簡單的資料庫
我只做了一個簡單的。。但是道理是一樣的。
//xml文件信息
<abc>
<Field>100</Field>
<item>
<id>1</id>
<name>zhangsan</name>
<sex>男</sex>
</item>
<item>
<id>2</id>
<name>lisi</name>
<sex>男</sex>
</item>
</abc>

//實體類。
public class Information
{
private string id;
public string Id
{
get { return id; }
set { id = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string sex;
public string Sex
{
get { return sex; }
set { sex = value; }
}
public Information()
{

}
public Information(string id,string name,string sex)
{
this.Id = id;
this.Name = name;
this.Sex = sex;
}
}
//讀取xml裡面的文件信息
List<Information> list = new List<Information>();
//實例化xml
XmlDocument xml = new XmlDocument();
//讀取xml文件
xml.Load(@"E:\C#\S2C#\DLCL\列印電腦\MyComputer\XulieHua\XML.xml"); //你的xml地址
string id = "";
string name = "";
string sex = "";
Information info = null;
//////////*******下面開始循環讀取xml文件信息********/
///////////////
foreach (XmlNode node in xml.ChildNodes)
{
if (node.Name == "abc")
{
foreach (XmlNode node1 in node.ChildNodes)
{
if (node1.Name == "item")
{
foreach (XmlNode node2 in node1.ChildNodes)
{
switch (node2.Name)
{
case "id":
id = node2.InnerText;
break;
case "name":
name = node2.InnerText;
break;
default:
sex = node2.InnerText;
break;
}
}
info = new Information(id, name, sex);
//將信息保存至集合
list.Add(info);
}
}
}
}
xml裡面的所有信息就是在list集合裡面了。。簡單吧。。嘿嘿。。
當然你可以做多個表和多個欄位屬性咯。。

❺ 各位大佬請問Java中關於框架中的xml文件是怎麼進行解析的

這都屬於比較核心的代碼了,有興趣又有時間你可以深入看看源碼

比如spring你可以了解下

org.springframework.beans.factory.xml.XmlBeanFactory(3.1之後棄用)

org.springframework.beans.factory.xml.XmlBeanDefinitionReader

附:Spring是如何載入Xml文件的

❻ 什麼是xml

XML 代表Extensible Markup Language(eXtensible Markup Language的縮寫,意為可擴展的標記語言)。 

XML是一套定義語義標記的規則,這些標記將文檔分成許多部件並對這些部件加以標識。它也是元標記語言,即定義了用於定義其他與特定領域有關的、語義的、結構化的標記語言的句法語言。
XML是元標記語言
關於XML要理解的第一件事是,它不只是像超文本標記語言(Hypertext Markup Language,HTML)或是格式化的程序。這些語言定義了一套固定的標記,用來描述一定數目的元素。如果標記語言中沒有所需的標記,用戶也就沒有辦法了。這時只好等待標記語言的下一個版本,希望在新版本中能夠包括所需的標記,但是這樣一來就得依賴於軟體開發商的選擇了。
但是XML是一種元標記語言。用戶可以定義自己需要的標記。這些標記必須根據某些通用的原理來創建,但是在標記的意義上,也具有相當的靈活性。例如,假如用戶正在處理與家譜有關的事情,需要描述人的出生、死亡、埋葬地、家庭、結婚、離婚等,這就必須創建用於每項的標記。新創建的標記可在文檔類型定義(Document Type Definition,在以後的篇幅中常簡稱為DTD)中加以描述。在本書的第二部分中將會學到有關DTD的更多的知識。現在,只需把DTD看作是一本詞彙表和某類文檔的句法。例如,在Peter Murray-Rust的Chemical Markup Language (化學標記語言,簡寫為CML)中的MOL.DTD文件中描述了詞彙表和分子科學的句法:其中包括chemistry(化學)、 crystallography(結晶學)、solid state physics(固體物理)等詞彙。它包括用於atoms(原子)、molecules(分子)、bonds(化學鍵)、spectra(光譜)等的標記。這個DTD可與分子科學領域中的許多不同的人共享。對於其他領域也有其他的DTD,用戶還可以創建自己的DTD。
XML定義了一套元句法,與特定領域有關的標記語言(如MusicML、MathML和CML)都必須遵守。如果一個應用程序可以理解這一元句法,那麼它也就自動地能夠理解所有的由此元語言建立起來的語言。瀏覽器不必事先了解多種不同的標記語言使用的每個標記。事實是,瀏覽器在讀入文檔或是它的DTD時才了解了給定文檔使用的標記。關於如何顯示這些標記的內容的詳細指令是附加在文檔上的另外的樣式單提供的。例如,考慮薛定格(Schrodinger)方程:
科學論文中充滿了這一類方程,但是科學家還必須等待多年,才能讓瀏覽器的開發商支持書寫最基本的數學公式所需的標記。音樂家也有同樣的局限性,因為Netscape Navigator和Internet Explorer還都不支持樂譜。 
有了XML就意味著不必等待瀏覽器的開發商來滿足用戶的需要了。用戶可以創建自己需要的標記,當需要時,告訴瀏覽器如何顯示這些標記就可以了。
XML描述的是結構和語義,而不是格式化
關於XML要了解的第二件事是,XML標記描述的是文檔的結構和意義。它不描述頁面元素的格式化。可用樣式單為文檔增加格式化信息。文檔本身只說明文檔包括什麼標記,而不是說明文檔看起來是什麼樣的。
作為對照,HTML文檔包括了格式化、結構和語義的標記。就是一種格式化標記,它使其中的內容變為粗體。是一種語義標記,意味著其中的內容特別重要。是結構標記,指明內容是表中的一個單元。事實上,某些標記可能具有所有這三種意義。標記可同時表示20磅的Helvetica字體的粗體、第一級標題和頁面標題。
例如,在HTML中,一首歌可能是用定義標題、定義數據、無序的列表和列表項來描述的。但是事實上這些項目沒有一件是與音樂有關的。用HTML定義的歌曲可能如下:
Hot Cop
by Jacques Morali Henri Belolo and Victor Willis

Procer: Jacques Morali
Publisher: PolyGram Records
Length: 6:20
Written: 978
Artist: Village People

而在XML中,同樣的數據可能標記為:

Hot Cop
Jacques Morali
Henri Belolo
Victor Willis
Jacques Morali
PolyGram Records
6:20
978
Village People

在這個清單中沒有使用通用的標記如和,而是使用了具有意義的標記,如、、和等。這種用法具有許多優點,包括源碼易於被人閱讀,使人能夠看出作者的含義。
XML標記還使非人類的自動機器人易於找出文檔中的所有歌曲。在HTML中,機器人只能

❼ powerbuilder讀入xml文件的源代碼 以及解析

可以使用fileopen, fileread來讀入一個字元型變數中,然後使用find來查找要解析的項,使用mid函數來截取解析出的內容。不過fileread長度不能超過32767.

❽ 如何解析XML,要源碼

把你的XLS文件重命名一下,在文件名後面加上ZIP,然後用解壓縮文件打開就能看到裡面全部是XML文件了,具體每個文件什麼意思就要好好研究了,這就深了

❾ 如何解析XML文件

1. 介紹

1)DOM(JAXP Crimson解析器)

DOM是用與平台和語言無關的方式表示XML文檔的官方W3C標准。DOM是以層次結構組織的節點或信息片斷的集合。這個層次結構允許開發人員在樹中尋找
特定信息。分析該結構通常需要載入整個文檔和構造層次結構,然後才能做任何工作。由於它是基於信息層次的,因而DOM被認為是基於樹或基於對象的。DOM
以及廣義的基於樹的處理具有幾個優點。首先,由於樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。它還可以在任何時候在樹中上下
導航,而不是像SAX那樣是一次性的處理。DOM使用起來也要簡單得多。

2)SAX

SAX處理的優點非常類似於流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由於應用程序只是在讀取數據時檢查數據,因此不需要將數
據存儲在內存中。這對於大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比
它的替代者DOM快許多。
選擇DOM還是選擇SAX? 對於需要自己編寫代碼來處理XML文檔的開發人員來說, 選擇DOM還是SAX解析模型是一個非常重要的設計決策。 DOM採用建立樹形結構的方式訪問XML文檔,而SAX採用的事件模型。

DOM解析器把XML文檔轉化為一個包含其內容的樹,並可以對樹進行遍歷。用DOM解析模型的優點是編程容易,開發人員只需要調用建樹的指令,然後利
用navigation APIs訪問所需的樹節點來完成任務。可以很容易的添加和修改樹中的元素。然而由於使用DOM解析器的時候需要處理整個XML文
檔,所以對性能和內存的要求比較高,尤其是遇到很大的XML文件的時候。由於它的遍歷能力,DOM解析器常用於XML文檔需要頻繁的改變的服務中。

SAX解析器採用了基於事件的模型,它在解析XML文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法
制定的標簽已經找到。SAX對內存的要求通常會比較低,因為它讓開發人員自己來決定所要處理的tag。特別是當開發人員只需要處理文檔中所包含的部分數據
時,SAX這種擴展能力得到了更好的體現。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數據。

3)JDOM http://www.jdom.org/

JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互並且比使用DOM實現更快。由於是第一個Java特定模型,JDOM一直得到大力推廣和
促進。正在考慮通過「Java規范請求JSR-102」將它最終用作「Java標准擴展」。從2000年初就已經開始了JDOM開發。

JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用介面。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發者的使用。

JDOM文檔聲明其目的是「使用20%(或更少)的精力解決80%(或更多)Java/XML問題」(根據學習曲線假定為20%)。JDOM對於大多
數Java/XML應用程序來說當然是有用的,並且大多數開發者發現API比DOM容易理解得多。JDOM還包括對程序行為的相當廣泛檢查以防止用戶做任
何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學習DOM或JDOM接
口都更有意義的工作。

JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(盡管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器
以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發布的開放源碼。

4)DOM4J http://dom4j.sourceforge.net/

雖然DOM4J代表了完全獨立的開發結果,但最初,它是JDOM的一種智能分支。它合並了許多超出基本XML文檔表示的功能,包括集成的XPath支持、
XML Schema支持以及用於大文檔或流化文檔的基於事件的處理。它還提供了構建文檔表示的選項,它通過DOM4J
API和標准DOM介面具有並行訪問功能。從2000下半年開始,它就一直處於開發之中。

為支持所有這些功能,DOM4J使用介面和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一
些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復雜的API的代價,但是它提供了比JDOM大得多的靈活性。

在添加靈活性、XPath集成和對大文檔處理的目標時,DOM4J的目標與JDOM是一樣的:針對Java開發者的易用性和直觀操作。它還致力於成為
比JDOM更完整的解決方案,實現在本質上處理所有Java/XML問題的目標。在完成該目標時,它比JDOM更少強調防止不正確的應用程序行為。

DOM4J是一個非常非常優秀的Java XML
API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟體。如今你可以看到越來越多的Java軟體都在使用DOM4J來讀寫
XML,特別值得一提的是連Sun的JAXM也在用DOM4J。

2.. 比較

1)DOM4J性能最好,連Sun的JAXM也在用DOM4J。目前許多開源項目中大量採用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML配置文件。如果不考慮可移植性,那就採用DOM4J.

2)JDOM和DOM在性能測試時表現不佳,在測試10M文檔時內存溢出。在小文檔情況下還值得考慮使用DOM和JDOM。雖然JDOM的開發者已經說明
他們期望在正式發行版前專注性能問題,但是從性能觀點來看,它確實沒有值得推薦之處。另外,DOM仍是一個非常好的選擇。DOM實現廣泛應用於多種編程語
言。它還是許多其它與XML相關的標準的基礎,因為它正式獲得W3C推薦(與基於非標準的Java模型相對),所以在某些類型的項目中可能也需要它(如在
JavaScript中使用DOM)。

3)SAX表現較好,這要依賴於它特定的解析方式-事件驅動。一個SAX檢測即將到來的XML流,但並沒有載入到內存(當然當XML流被讀入時,會有部分文檔暫時隱藏在內存中)。

3. 四種xml操作方式的基本使用方法

[java] view plain
xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<Result>
<VALUE>
<NO DATE="2005">A1</NO>
<ADDR>GZ</ADDR>
</VALUE>
<VALUE>
<NO DATE="2004">A2</NO>
<ADDR>XG</ADDR>
</VALUE>
</Result>

1)DOM

import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;

public class MyXMLReader{
public static void main(String arge[]){

long lasting =System.currentTimeMillis();
try{
File f=new File("data_10k.xml");
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("VALUE");
for (int i=0;i<nl.getLength();i++){
System.out.print("車牌號碼:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("車主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
}catch(Exception e){
e.printStackTrace();
}

2)SAX

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;

public class MyXMLReader extends DefaultHandler {

java.util.Stack tags = new java.util.Stack();
public MyXMLReader() {
super();
}

public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
MyXMLReader reader = new MyXMLReader();
sp.parse(new InputSource("data_10k.xml"), reader);
} catch (Exception e) {
e.printStackTrace();
}

System.out.println("運行時間:" + (System.currentTimeMillis() - lasting) + "毫秒");}
public void characters(char ch[], int start, int length) throws SAXException {
String tag = (String) tags.peek();
if (tag.equals("NO")) {
System.out.print("車牌號碼:" + new String(ch, start, length));
}
if (tag.equals("ADDR")) {
System.out.println("地址:" + new String(ch, start, length));
}
}

public void startElement(String uri,String localName,String qName,Attributes attrs) {
tags.push(qName);}
}

3) JDOM

import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;

public class MyXMLReader {

public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("data_10k.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for(int i=0;i<allChildren.size();i++) {
System.out.print("車牌號碼:" + ((Element)allChildren.get(i)).getChild("NO").getText());
System.out.println("車主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());
}
} catch (Exception e) {
e.printStackTrace();
}

}

4)DOM4J

import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;

public class MyXMLReader {

public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("data_10k.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
foo = (Element) i.next();
System.out.print("車牌號碼:" + foo.elementText("NO"));
System.out.println("車主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
}

❿ C語言xml解析

把所有的數據當做一個字元串
收到數據後先strstr(buffer,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
如果返回的是NULL則表示沒有這段 退出
buffer是你收到的數據起始地址

閱讀全文

與xml源碼詳解相關的資料

熱點內容
ug命令視頻大全 瀏覽:610
箱子裝貨物最小容量編程 瀏覽:99
cad2014教程pdf 瀏覽:200
怎麼遍歷伺服器同一類型的文件 瀏覽:436
惠普戰66畫圖編程 瀏覽:806
java面向對象作業 瀏覽:570
cad插件製作加密狗 瀏覽:923
cmd命令對話框 瀏覽:291
安卓應用怎麼常駐 瀏覽:677
安卓手機怎麼群發小費才不會被鎖 瀏覽:741
相機文件夾設置 瀏覽:856
centos7php怎麼用 瀏覽:119
查看linux操作系統版本的命令 瀏覽:383
收支預演算法怎麼做 瀏覽:876
模板如何上傳到伺服器 瀏覽:372
如何同步安卓信息到新ipad 瀏覽:365
騰訊雲輕量伺服器流量警告 瀏覽:504
u盤備份linux 瀏覽:121
高壓縮比活塞 瀏覽:92
壓縮彈簧標准件 瀏覽:26