当前位置:首页 » 存储配置 » 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的另一项功能也将逐渐被业界抛弃。

热点内容
ins苹果注册如何获取服务器地址 发布:2024-10-07 22:25:43 浏览:626
android怎么改 发布:2024-10-07 22:24:13 浏览:863
我的世界ec服务器消失了 发布:2024-10-07 21:48:30 浏览:661
pythonziptodict 发布:2024-10-07 21:36:09 浏览:790
linux操作系统教程 发布:2024-10-07 21:16:54 浏览:280
摩托音响怎么配置 发布:2024-10-07 21:12:37 浏览:348
本田思域哪个配置好 发布:2024-10-07 21:04:11 浏览:347
算法期末试卷 发布:2024-10-07 20:51:04 浏览:808
编译期错误提示 发布:2024-10-07 20:07:23 浏览:297
阿里云服务器打开慢 发布:2024-10-07 20:06:33 浏览:578