xml是怎麼存儲數據的
Ⅰ xml文件是什麼
xml是可擴展標記語言,外文名:eXtensible Markup Language,xml文件就是存儲該語言的文件。
可擴展標記語言,標准通用標記語言的子集,一種用於標記電子文件使其具有結構性的標記語言。
它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 它非常適合萬維網傳輸,提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。
XML與Access,Oracle和SQL Server等資料庫不同,資料庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,XML僅僅是存儲數據。事實上XML與其他數據表現形式最大的不同是:它極其簡單,這是一個看上去有點瑣細的優點,但正是這點使XML與眾不同。
XML與HTML的設計區別是:XML被設計為傳輸和存儲數據,其焦點是數據的內容。而HTML被設計用來顯示數據,其焦點是數據的外觀。HTML旨在顯示信息,而 XML旨在傳輸信息。
XML和HTML語法區別:HTML的標記不是所有的都需要成對出現,XML則要求所有的標記必須成對出現;HTML標記不區分大小寫,XML則大小敏感,即區分大小寫。
標准通用標記語言、HTML是XML的先驅。標准通用標記語言它是國際上定義電子文件結構和內容描述的標准,是一種非常復雜的文檔的結構,主要用於大量高度結構化數據的防衛區和其他各種工業領域,利於分類和索引。同XML相比,定義的功能很強大,缺點是它不適用於Web數據描述,而且標准通用標記語言軟體價格非常昂貴。 HTML相信大家都比較熟悉,即超文本標識語言,它的優點是比較適合web頁面的開發。但它有一個缺點是標記相對少,只有固定的標記集如<p>.<strong>等。缺少標准通用標記語言的柔性和適應性。不能支持特定領域的標記語言,如對數學、化學、音樂等領域的表示支持較少。舉個例子來說,開發者很難在網頁上表示數學公式、化學分子式和樂譜。 XML結合了標准通用標記語言和HTML的優點並消除其缺點。XML仍然被認為是一種標准通用標記語言。比標准通用標記語言要簡單,但能實現標准通用標記語言的大部分的功能。1996年的夏天,Sun Microssystem的John Bosak開始開發W3C SGML工作組(現在稱為XML工作組)。他們的目標是創建一種標准通用標記語言,使其在Web中,既能利用標准通用標記語言的長處,又保留html的簡單性。現在目標基本達到。
XML的簡單使其易於在任何應用程序中讀寫數據,這使XML很快成為數據交換的唯一公共語言,雖然不同的應用軟體也支持其它的數據交換格式,但不久之後他們都將支持XML,那就意味著程序可以更容易的與Windows, Mac OS, Linux以及其他平台下產生的信息結合,然後可以很容易載入XML數據到程序中並分析它,並以XML格式輸出結果。
標准通用標記語言常用來定義針對HTML的文檔類型定義(DTD),同時它也常用於編寫XML的DTD。標准通用標記語言的問題就在於它允許出現一些奇怪的語法,這讓創建HTML的解析器成為一個大難題:
1 某些起始標簽可以選擇性出現結束標簽或者隱含了結束標簽。
2 某些起始標簽要求必須出現結束標簽,例如HTML中<script>「腳本」標簽。
3 標簽可以以任何順序嵌套。即使結束標簽不按照起始標簽的逆序出現也是允許的,例如,This is asamplestring是正確的。
4 某些特性要求必須包含值,例如<圖片 源="我的靚照.jpg">中的源特性。
5 某些特性不要求一定有值,例如中的「不換行」(外國語:nowrap)特性。
6 定義特性的兩邊有沒有加上雙引號都是可以的,所以
1
2
<網路
詞條="可擴展標記語言">
1
<!--和-->
1
2
<網路
詞條=可擴展標記語言>
都是允許的。
這些問題使建立一個標准通用標記語言的解析器變成了一項艱巨的任務,判斷何時應用以上規則的困難導致了標准通用標記語言語言的定義一直停滯不前,以這些問題作為出發點,XML逐漸步入我們的視野。
XML去掉了之前令許多開發人員頭疼的標准通用標記語言的隨意語法。在XML中,採用了如下的語法:
一、任何的起始標簽都必須有一個結束標簽。
二、可以採用另一種簡化語法,可以在一個標簽中同時表示起始和結束標簽。這種語法是在大於符號之前緊跟一個斜線(/),例如<網路詞條/>。XML解析器會將其翻譯成<網路詞條></網路詞條>。
三、標簽必須按合適的順序進行嵌套,所以結束標簽必須按鏡像順序匹配起始標簽,例如這是一個網路中的樣例字元串。這好比是將起始和結束標簽看作是數學中的左右括弧:在沒有關閉所有的內部括弧之前,是不能關閉外面的括弧的。
四、所有的特性都必須有值。
五、所有的特性都必須在值的周圍加上雙引號。
這些規則使得開發一個XML解析器要簡便得多,而且也除去了解析標准通用標記語言中花在判斷何時何地應用那些奇怪語法規則上的工作。僅僅在XML出現後的前六年就衍生出多種不同的語言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同時也將HTML改進為XHTML。
Ⅱ .XML是什麼文件
.XML一般是配置文件,格式正規的xml文檔、有xml聲明語句、有且僅有一個根元素,標簽大小寫敏感,屬性值用雙引號,標簽成對,空標簽關閉,元素正確嵌套。
(2)xml是怎麼存儲數據的擴展閱讀:
xml是當前處理結構化文檔信息中相當給力的技術,xml有助於在伺服器之間穿梭結構化數據,這使得開發人員更加得心應手的控制數據的存儲和傳輸。
Xml用於標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。Xml是標准通用標記語言(SGML)的子集,非常適合Web傳輸。XML提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。
Ⅲ xml現在和將來的主要運用
XML是用來存儲、傳輸和交換數據的,它不是用來顯示數據的。
一、XML可以將數據從HTML中分離出來
通常,你的HTML文件中包含了要顯示的數據;但如果你使用XML,你的數據就可以單獨存儲在一個XML文件中;然後你就可以集中精力在HTML文件的布局和顯示方面,並且以後修改數據只需要修改XML文件既可,而不用去動HTML文件。
XML的數據也可以作為一個數據塊存儲在HTML頁面中。
二、XML可以用來交換數據
用XML你可以有兩個不兼容的系統間交換數據。通常,開發人員不得不花大量的時間在兩個不兼容的系統間交換數據,如果我們將數據轉換為XML,那麼這將大大降低數據交換的復雜性,並且不同類型的應用程序都可以讀取它。
三、XML和商務通信
在internet上,交換金融信息將主要採用XML語言,很多有意義的商務通信應用程序都是在其下開發的。
四、共享數據
因為XML是以簡單的文本格式存儲的,因此在共享數據方面,XML提供了一獨立於軟硬體的方法。這使得創建被不同應用程序所使用的數據更容易。也使得系統的升級更容易。
五、存取數據
XML可用於將數據存儲在文件或資料庫中,應用程序能夠存取和檢索這些信息。一般的應用是顯示這些信息。
六、創建新的語言
XML可以用來創建新的語言,WAP和WML就是由它創建的。
上面是摘抄
對於將來來說
XML可以創建更多新的語言 如支撐WPF(微軟最新圖形界面的支柱)
就是用XML做成的(只不過叫XAML而已)
還有更多更多的擴展語言 慢慢會壯大XML的陣營!
我相信 XML化已經不遠了
Ⅳ 關系資料庫中如何存儲xml數據
XML文檔的一個普通存在的問題是如何持久保存(Persist) XML文檔。在一個關系資料庫中存儲XML文檔是一個非常常用的方法,因為當前關系資料庫的使用非常廣泛。
將XML文檔插入到資料庫中不是簡單的方法,這其中需要很多其它額外的考慮。現在我提供了一些技巧,你可以使用這些技巧在關系資料庫中存儲XML文檔。
1、文檔表:
一個最簡單和容易的方法是,在一個具有單一文本域的資料庫中建立一個表,由此你可以在表中存儲XML數據。由於這些特定資料庫和特定XML文檔,這一文本域可以是一個二進制大型對象(BLOB,binary large object)。有些資料庫需要存儲的是大量的BLOB數據而不是文本。
這一方法的優點是,將數據存入表中變得相當簡單,而且重新獲得也同樣很容易。這種文檔表的管理也很方便。
這種方法的缺點在於你將可能無法進行一些有用的文本搜索,並且在放置特定文檔時也會碰到困難,因為沒有任何方法來識別表中的文檔;
2、主鍵表:
下一個比較復雜的方法是使用一個主鍵表(keyed table)。這種方法與文檔表非常相似,但此時你的表中包含兩個域:一個唯一的主鍵和XML文檔。使用這種方法,你既可以具有存儲和獲得整個XML文檔的簡潔性,也可以使用一些管理這些唯一主鍵的復雜操作;
建立主鍵的一種通用方法是使用XML文檔中的MD5求和檢驗。請記住如果你想在表中包括多份XML文檔,這一方法遠不足夠。在這種情況下,你可以添加額外的key fields標識鍵列。
與文檔表一樣,主鍵表很容易執行,它可以在表中查找特定的文檔。然而,與文檔表一樣,你仍然不能執行任何文本查詢;
3、有限離散表:
這一方法更加復雜,但它給你帶來更多的靈活性。使用有限離散表,你可以建立用於存儲有限分散的XML信息的表,這是什麼意思?請看以下的例子:
假設你具有一個順序文檔。在文檔的根部(Root)有一個Order元素,這一元素包括CustomerInfo, ItemInfo, 以及hippingInfo元素。在資料庫中,你可以建立一個OrderDoc表,表中包含一個ID域,一個CustomerInfoId域,一個ItemInfoId域,一個ShippingInfoId域。然而,你還可以建立一個CustomerInfoId表,一個ItemInfoId表,一個ShippingInfoId表。這些表都包含很多信息相關的各自的ID域,這些信息包括用戶,選項,郵寄信息。在這一表中,還包含著其它額外的等級。比如,CustomerInfo表包含AddressInfo域,即從AddressInfo表中引用的入口。
這種方法的優點是,允許你更緊密地建立XML數據的模型。這種方法使得你進行數據的一些成熟的查詢。它也使得數據的使用性更強,因為你不再需要XML分析器來讀取數據。
不足之處是這種方法需要更多的精力來開發和維護。這意味著每一文檔都需要解析成分離的部分,然後存儲在資料庫中。如果這一過程沒有得以很好管理,有可能會丟失一些數據。而且,這也意味著,當從一個資料庫中獲得一個XML文檔時,你不得不連接這些分散的部分。
Ⅳ xml是什麼格式的文件
xml是一種純文本格式的文件。xml指的是可擴展標記語言,標准通用標記語言的子集,是一種用於標記電子文件使其具有結構性的標記語言;而XML文件一般指裡面寫有可擴展標記語言代碼的文件。
XML的特點
XML可以從HTML中分離數據。即能夠在HTML文件之外將數據存儲在XML文檔中,這樣可以使開發者集中精力使用HTML做好數據的顯示和布局,並確保數據改動時不會導致HTML文件也需要改動,從而方便維護頁面。XML也能夠將數據以「數據島」的形式存儲在HTML頁面中,開發者依然可以把精力集中到使用HTML格式化和顯示數據上。
XML可用於交換數據。基於XML可以在不兼容的系統之間交換數據,計算機系統和資料庫系統所存儲的數據有多種形式,對於開發者來說,最耗時間的工作就是在遍布網路的系統之間交換數據。把數據轉換為XML格式存儲將大大減少交換數據時的復雜性,還可以使這些數據能被不同的程序讀取。
XML可應用於B2B中。例如在網路中交換金融信息,目前XML正成為遍布網路的商業系統之間交換信息所使用的主要語言,許多與B2B有關的完全基於XML的應用程序正在開發中。
利用XML可以共享數據。XML數據以純文本格式存儲,這使得XML更易讀、更便於記錄、更便於調試,使不同系統、不同程序之間的數據共享變得更加簡單。
XML可以充分利用數據。XML是與軟體、硬體和應用程序無關的,數據可以被更多的用戶、設備所利用,而不僅僅限於基於HTML標準的瀏覽器。其他客戶端和應用程序可以把XML文檔作為數據源來處理,就像操作資料庫一樣,XML的數據可以被各種各樣的「閱讀器」處理。
Ⅵ 老師說將xml解析後存儲到資料庫中,怎樣將解析後的存儲到資料庫中
因為不知道你用的是什麼語言。我大概說一下意思吧。
XML文件本身是一個內容的結構體,資料庫是一個表格結構的內容結構體,因此要把XML中的標簽或者是屬性解析成資料庫中相應的表頭,然後將XML中的元素填入相應的表中。就完成了數據的解析和存儲。
Ⅶ 解釋為什麼xml對數據存儲是非常有用的
1、XML :使用簡單的標記描述數據。
2、XML:主要就是針對數據存儲的。不象ACCESS、SQL等還有分析數據的能力(比如:查找、索引、排序等)
3、XML:更多的平台支持該簡單語言。(如Windows、Mac、Linux等)
Ⅷ xml文件在內存中是怎麼存儲的
你可以用流的形式讀到程序中,也可以以文本的方法讀進去。文本和流都是可以相互轉換的,看你具體需要。xml處理類XmlReader.Create可以用流創建,也可以用文本創建,重載方式很多。本質上它在內存里也是以二進制形式存在的,和一般文件沒什麼區別。
Ⅸ 如何使用xml 存儲數據
創建一個介面
XmlInterface.java
?
public interface XmlInterface {
/**
* 建立XML文檔
* @param fileName 文件全路徑名稱
*/
public void createXml(String fileName);
/**
* 解析XML文檔
* @param fileName 文件全路徑名稱
*/
public void parserXml(String fileName);
}
介面實現
XmlImpl.java
?
package com.test.xml;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XmlImpl implements XmlInterface{
private Document document;
public void init() {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
this.document = builder.newDocument();
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
}
}
public void createXml(String fileName) {
Element root = this.document.createElement("scores");
this.document.appendChild(root);
Element employee = this.document.createElement("employee");
Element name = this.document.createElement("name");
name.appendChild(this.document.createTextNode("wangchenyang"));
employee.appendChild(name);
Element sex = this.document.createElement("sex");
sex.appendChild(this.document.createTextNode("m"));
employee.appendChild(sex);
Element age = this.document.createElement("age");
age.appendChild(this.document.createTextNode("26"));
employee.appendChild(age);
root.appendChild(employee);
TransformerFactory tf = TransformerFactory.newInstance();
try {
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
System.out.println("生成XML文件成功!");
} catch ( e) {
System.out.println(e.getMessage());
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (TransformerException e) {
System.out.println(e.getMessage());
}
}
public void parserXml(String fileName) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(fileName);
NodeList employees = document.getChildNodes();
for (int i = 0; i < employees.getLength(); i++) {
Node employee = employees.item(i);
NodeList employeeInfo = employee.getChildNodes();
for (int j = 0; j < employeeInfo.getLength(); j++) {
Node node = employeeInfo.item(j);
NodeList employeeMeta = node.getChildNodes();
for (int k = 0; k < employeeMeta.getLength(); k++) {
System.out.println(employeeMeta.item(k).getNodeName()
+ ":" + employeeMeta.item(k).getTextContent());
}
}
}
System.out.println("解析完畢");
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
} catch (SAXException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
測試
?
public class Main {
public static void main(String args[]){
XmlImpl dd=new XmlImpl();
String str="D:/grade.xml";
dd.init();
dd.createXml(str); //創建xml
dd.parserXml(str); //讀取xml
}
}
結果
生成xml
<?xml version="1.0" encoding="GB2312"?><scores><employee><name>wangchenyang</name><sex>m</sex><age>26</age></employee></scores>復制代碼