當前位置:首頁 » 存儲配置 » xml數據存儲技術

xml數據存儲技術

發布時間: 2022-07-17 03:39:38

Ⅰ xml資料庫的簡介

目前XML資料庫有三種類型:
(1)XMLEnabledDatabase(XEDB),即能處理XML的資料庫。其特點是在原有的資料庫系統上擴充對XML數據的處理功能,使之能適應XML數據存儲和查詢的需要。一般的做法是在資料庫系統之上增加XML映射層,這可以由資料庫供應商提供,也可以由第三方廠商提供。映射層管理XML數據的存儲和檢索,但原始的XML元數據和結構可能會丟失,而且數據檢索的結果不能保證是原始的XML形式。XEDB的基本存儲單位與具體的實現緊密相關。
(2)NativeXMLDatabase(NXD),即純XML資料庫。其特點是以自然的方式處理XML數據,以XML文檔作為基本的邏輯存儲單位,針對XML的數據存儲和查詢特點專門設計適用的數據模型和處理方法。
(3)HybridXMLDatabase(HXD),即混合XML資料庫。根據應用的需求,可以視其為XEDB或NXD的資料庫,典型的例子是Ozone。
XML資料庫是一個能夠在應用中管理XML數據和文檔的集合的資料庫系統。XML資料庫是XML文檔及其部件的集合,並通過一個具有能力管理和控制這個文檔集合本身及其所表示信息的系統來維護。XML資料庫不僅是結構化數據和半結構化數據的存儲庫,像管理其它數據一樣,持久的XML數據管理包括數據的獨立性、集成性、訪問許可權、視圖、完備性、冗餘性、一致性以及數據恢復等。這些文檔是持久的並且是可以操作的。
當前著重於頁面顯示格式的HTML標記語言和基於它的關鍵詞檢索等技術已經不能滿足用戶日益增長的信息需求。近年來的研究致力於將資料庫技術應用於網上數據的管理和查詢,使查詢可以在更細的粒度上進行,並集成多個數據源的數據。但困難在於網上數據缺乏統一的、固定的模式,數據往往是不規則且經常變動的。因此,XML數據作為一種自描述的半結構化數據為Web的數據管理提供了新的數據模型,如果將XML標記數據放入一定的結構中,對數據的檢索、分析、更新和輸出就能夠在更加容易管理的、系統的和較為熟悉的環境下進行,因而我們將資料庫技術應用於XML數據處理領域,通過XML數據模型與資料庫模型的映射來存儲、提取、綜合和分析XML文檔的內容。這為資料庫研究開拓了一個新的方向,將資料庫技術的研究擴展到對Web數據的管理。

Ⅱ xml存儲技術和關系資料庫的存儲技術有什麼不同

XML數據的結構和關系數據不同,要支持的查詢是XQUERY或Xpath,結構上有3種軸,所以在索引構建方面和關系數據差別都很大

java可以用xml存儲數據嗎

可以不過要熟悉xml解析的過程,其實存數據用List<Map>

Ⅳ 如何使用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>復制代碼

Ⅳ XML是什麼技術

XML是一種文件協議的載體,有很多用處,要看你怎麼用。

比如我想用xml存儲數據你就可以定義自己的結構:

<?xml>
<data>
<record>
<field1>1</field1>
<field2>2</field2>
<field3>3</field3>
</record>
<record>
<field1>1</field1>
<field2>2</field2>
<field3>3</field3>
</record>
<record>
<field1>1</field1>
<field2>2</field2>
<field3>3</field3>
</record>
</data>

網上都有很多現成的操作xml的庫,你可以參考一下一些例子

Ⅵ 關於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技術在軟體體系結構上的應用,具體一些。

xml的結構具有規范性,並且xml文檔結構可以根據用戶需求自定製。
通常在軟體體系結構中充當軟體模塊之間數據介面文檔的作用。
軟體模塊在讀數據或者寫數據時候,可以用一種非常規范的方式讀取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文檔時,你不得不連接這些分散的部分。

Ⅸ java項目中一般需要用到xml技術的哪些方面

XML的主要作用有兩個方面:數據交換和信息配置。在做數據交換時,XML將數據用標簽組裝成起來,然後壓縮打包加密後通過網路傳送給接收者,接收解密與解壓縮後再從XML文件中還原相關信息進行處理,XML曾經是異構系統間交換數據的事實標准,但此項功能幾乎已經被JSON(JavaScript Object Notation)取而代之。當然,目前很多軟體仍然使用XML來存儲配置信息,我們在很多項目中通常也會將作為配置信息的硬代碼寫在XML文件中,Java的很多框架也是這么做的,而且這些框架都選擇了dom4j作為處理XML的工具,因為Sun公司的官方API實在不怎麼好用。
補充:現在有很多時髦的軟體(如Sublime)已經開始將配置文件書寫成JSON格式,我們已經強烈的感受到XML的另一項功能也將逐漸被業界拋棄。

熱點內容
編譯期錯誤提示 發布:2024-10-07 20:07:23 瀏覽:296
阿里雲伺服器打開慢 發布:2024-10-07 20:06:33 瀏覽:577
磁存儲行業的前景 發布:2024-10-07 20:01:29 瀏覽:548
android對象序列化 發布:2024-10-07 20:01:28 瀏覽:760
安卓上面的微信如何恢復 發布:2024-10-07 19:57:45 瀏覽:52
510低配包括哪些配置 發布:2024-10-07 19:38:21 瀏覽:556
ping伺服器地址一直丟包 發布:2024-10-07 19:37:34 瀏覽:588
怎麼去除手機鎖屏密碼 發布:2024-10-07 18:56:05 瀏覽:67
怎樣注冊手機貼吧賬號密碼是什麼 發布:2024-10-07 18:55:17 瀏覽:365
埠安全配置屬於什麼 發布:2024-10-07 18:41:01 瀏覽:794