XML解析是什么意思怎么解析啊?

Python016

XML解析是什么意思怎么解析啊?,第1张

XML 解析

XML 解析是将 XML 数据从其序列化字符串格式转换为分层格式的过程。

可以让 DB2® 数据库管理器隐式执行解析,也可以显式执行 XML 解析。

在下列情况下进行隐式 XML 解析:

使用类型为 XML 的主变量或使用类型为 XML 的参数标记将数据传递至数据库服务器时

数据库服务器在绑定主变量或参数标记的值以便在语句处理期间使用时进行解析

在这种情况下,必须使用隐式解析。

在 INSERT、UPDATE、DELETE 或 MERGE 语句中将字符串数据类型(character、graphic 或 binary)的主变量、参数标记或 SQL 表达式指定给 XML 列时。当 SQL 编译器隐式将 XMLPARSE 函数添加至该语句时进行解析。

对输入 XML 数据调用 XMLPARSE 函数时,执行显式 XML 解析。可以在接受 XML 数据类型的任何上下文中使用 XMLPARSE 的结果。例如,可以将结果指定给 XML 列或将它用作类型为 XML 的存储过程参数。

XMLPARSE 函数采用非 XML、字符或二进制数据类型作为输入。对于嵌入式动态 SQL 应用程序,需要将表示 XMLPARSE 的输入文档的参数标记强制类型转换为相应的数据类型。例如:

INSERT INTO MyCustomer (Cid, Info)

VALUES (?, xmlparse(document cast(? as clob(1k)) preserve whitespace))

对于静态嵌入式 SQL 应用程序,不能将 XMLPARSE 函数的主变量自变量声明为 XML 类型(XML AS BLOB、XML AS CLOB 或 XML AS DBCLOB 类型)。

XML 解析和空格处理

在隐式或显式 XML 解析期间,将数据存储在数据库中时,可以控制是保留还是去掉边界空格字符。

根据 XML 标准,空格是文档中用于提高可读性的间隔字符(U+0020)、回车符(U+000D)、换行符(U+000A)或制表符(U+0009)。当任何这些字符作为文本字符串的一部分出现时,不将它们视为空格。

边界空格是出现在元素之间的空格字符。例如,在以下文档中,<a>与 <b>以及 </b>与 </a>之间的空格是边界空格。

<a><b>and between </b></a>

通过显式调用 XMLPARSE,可以使用 STRIP WHITESPACE 或 PRESERVE WHITESPACE 选项来控制是否保留边界空格。缺省行为是去掉边界空格。

通过隐式 XML 解析:

如果输入数据类型不是 XML 类型或未强制类型转换为 XML 数据类型,则 DB2 数据库管理器总是去掉空格。

如果输入数据类型是 XML 数据类型,则可以使用 CURRENT IMPLICIT XMLPARSE OPTION 专用寄存器来控制是否保留边界空格。可以将此专用寄存器设置为 STRIP WHITESPACE 或 PRESERVE WHITESPACE。缺省行为是去掉边界空格。

如果使用 XML 验证,则 DB2 数据库管理器将忽略 CURRENT IMPLICIT XMLPARSE OPTION 专用寄存器,并只使用验证规则来确定下列示例中是去掉还是保留空格:

xmlvalidate(? ACCORDING TO XMLSCHEMA ID schemaname)

xmlvalidate(?)

xmlvalidate(:hvxml ACCORDING TO XMLSCHEMA ID schemaname)

xmlvalidate(:hvxml)

xmlvalidate(cast(? as xml) ACCORDING TO XMLSCHEMA ID schemaname)

xmlvalidate(cast(? as xml))

在这些示例中,? 表示 XML 数据,而 :hvxml 是 XML 主变量。

有关 XML 验证如何影响空格处理方式的信息,请参阅 XML 验证。

XML 标准指定 xml:space 属性,它用于控制是去掉还是保留 XML 数据中的空格。xml:space 属性覆盖任何空格设置以进行隐式或显式 XML 解析。

例如,在以下文档中,无论 XML 解析选项如何,总是保留正好在 <b>前后的空格,因为这些空格位于具有属性 xml:space="preserve" 的节点内:

<a xml:space="preserve"><b><c>c</c>b </b></a>

但是,在以下文档中,可以用 XML 解析选项控制正好在 <b>前后的空格,因为这些空格位于具有属性 xml:space="default" 的节点内:

<a xml:space="default"><b><c>c</c>b </b></a>

XML 解析和 DTD

如果输入数据包含内部文档类型声明(DTD)或引用外部 DTD,则 XML 解析过程还会检查这些 DTD 的语法。此外,解析过程还:

应用内部和外部 DTD 定义的缺省值

扩展实体引用和参数实体

示例:文件 c8.xml 包含以下文档:

<customerinfo xml:space="preserve" xmlns="http://posample.org" Cid='1008'>

<name>Kathy Smith</name>

<addr country='Canada'>

<street>14 Rosewood</street>

<city>Toronto</city>

<prov-state>Ontario</prov-state>

<pcode-zip>M6W 1E6</pcode-zip>

</addr>

<phone type='work'>416-555-3333</phone>

</customerinfo>

在 JDBC 应用程序中,从文件中读取 XML 文档,并将数据插入到表 MyCustomer(它是样本 Customer 表的副本)的 XML 列 Info 中。让 DB2 数据库服务器执行隐式 XML 解析操作。

PreparedStatement insertStmt = null

String sqls = null

int cid = 1008

sqls = "INSERT INTO MyCustomer (Cid, Info) VALUES (?, ?)"

insertStmt = conn.prepareStatement(sqls)

insertStmt.setInt(1, cid)

File file = new File("c8.xml")

insertStmt.setBinaryStream(2, new FileInputStream(file), (int)file.length())

insertStmt.executeUpdate()

未指定空格处理方式,因此采用缺省行为:去掉空格。但是,文档包含 xml:space="preserve" 属性,因此保留空格。这表示将保留文档中元素之间的回车符、换行符和空格。

如果检索存储的数据,则内容看起来如下所示:

<customerinfo xml:space="preserve" xmlns="http://posample.org" Cid='1008'>

<name>Kathy Smith</name>

<addr country='Canada'>

<street>14 Rosewood</street>

<city>Toronto</city>

<prov-state>Ontario</prov-state>

<pcode-zip>M6W 1E6</pcode-zip>

</addr>

<phone type='work'>416-555-3333</phone>

</customerinfo>

示例:假定以下文档位于 BLOB 主变量 blob_hostvar 中。

<customerinfo xml:space="default" xmlns="http://posample.org" Cid='1009'>

<name>Kathy Smith</name>

<addr country='Canada'>

<street>15 Rosewood</street>

<city>Toronto</city>

<prov-state>Ontario</prov-state>

<pcode-zip>M6W 1E6</pcode-zip>

</addr>

<phone type='work'>416-555-4444</phone>

</customerinfo>

在静态嵌入式 C 应用程序中,将主变量中的文档插入到表 MyCustomer 的 XML 列 Info 中。该主变量不是 XML 类型,因此需要显式执行 XMLPARSE。指定 STRIP WHITESPACE 以除去任何边界空格。

EXEC SQL BEGIN DECLARE SECTION

SQL TYPE BLOB (10K) blob_hostvar

EXEC SQL END DECLARE SECTION

...

EXEC SQL INSERT INTO MyCustomer (Cid, Info)

VALUES (1009,

XMLPARSE(DOCUMENT :blob_hostvar STRIP WHITESPACE))

文档包含 xml:space="default" 属性,因此指定了 STRIP WHITESPACE 的 XMLPARSE 将控制空格处理方式。这表示将除去文档中元素之间的回车符、换行符和空格。

如果检索存储的数据,则您将看到具有以下内容的单个行:

<customerinfo xml:space="default" xmlns="http://posample.org" Cid='1009'>

<name>Kathy Smith</name><addr country='Canada'><street>15 Rosewood</street>

<city>Toronto</city><prov-state>Ontario</prov-state><pcode-zip>M6W 1E6</pcode-zip>

</addr><phone type='work'>416-555-4444</phone></customerinfo>

示例:在 C 语言应用程序中,主变量 clob_hostvar 包含以下文档,该文档包含内部 DTD:

<!DOCTYPE prod [<!ELEMENT description (name,details,price,weight)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT details (#PCDATA)>

<!ELEMENT price (#PCDATA)>

<!ELEMENT weight (#PCDATA)>

<!ENTITY desc "Anvil">

]>

<product xmlns="http://posample.org" pid=''110-100-01'' >

<description>

<name>&desc</name>

<details>Very heavy</details>

<price>9.99</price>

<weight>1 kg</weight>

</description>

</product>'

将数据插入到表 MyProduct 中,它是样本 Product 表的副本:

EXEC SQL BEGIN DECLARE SECTION

SQL TYPE CLOB (10K) clob_hostvar

EXEC SQL END DECLARE SECTION

...

EXEC SQL insert into

Product ( pid, name, Price, PromoPrice, PromoStart, PromoEnd, description )

values ( '110-100-01','Anvil', 9.99, 7.99, '11-02-2004','12-02-2004',

XMLPARSE ( DOCUMENT :clob_hostvar STRIP WHITESPACE ))

XMLPARSE 指定去掉空格,因此将除去文档内的边界空格。此外,在数据库服务器执行 XMLPARSE 时,它将实体引用 &desc替换为它的值。

如果检索存储的数据,则您将看到具有以下内容的单个行:

<product xmlns="http://posample.org" pid="110-100-01"><description><name>Anvil

</name><details>Very heavy</details><price>9.99</price>

<weight>1 kg</weight></description></product>

可以用Java建立和管理XML档案吗? 可以

webstorm可以建立xml档案吗

File ->Settings ->Editor ->File Types

在Recognized File Types 中找到你想使用的格式,然后在Registered Patterns 中新增 *.xml。

用tinyxml建立xml档案

——需要的包

#include <XMLDoc.hpp>

——相关说明

_di_IXMLDocument 为模板类

typedef System::DelphiInterface<IXMLDocument >_di_IXMLDocument

_di_IXMLNode

typedef System::DelphiInterface<IXMLNode >_di_IXMLNode

_di_IXMLNodeList 同

——类方法

设定引数

void TXXX::setOptions(String name,String value){

建立文件物件

_di_IXMLDocument XMLDoc = LoadXMLDocument(L"档案路径")

XMLDoc->Active=true

文件根节点

_di_IXMLNode root = XMLDoc->DocumentElement

想要查询节点

_di_IXMLNode tempNode

调用搜索方法

searchXml(name,root,tempNode)

处理

if(tempNode!=NULL)

tempNode->SetText(value)

XMLDoc->SaveToFile(L"档案路径")

}

递回搜寻引数节点树

void TXXX::searchXml(String name,_di_IXMLNode &Parent_Node,_di_IXMLNode&tempNode){

_di_IXMLNode Child_Node子结点

子节点列表

_di_IXMLNodeList list = Parent_Node->ChildNodes

for(int i=0i<list->Counti++)

{

Child_Node = list->Get(i)

递回结束条件

if(Child_Node->GetNodeName()==name)

{

tempNode = Child_Node

break

}

else

{

递回函式

searchXml(name,Child_Node,tempNode)

}

}

}

如何用java程式码建立xml档案

用java自带的就可以,有问题可以问我

import javax.xml.parsers.DocumentBuilder

import javax.xml.parsers.DocumentBuilderFactory

构造

public XMLUtil(String name) throws ParserConfigurationException {

filename = name

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance()

builder = factory.newDocumentBuilder()

document = builder.newDocument()

}

/**

* 储存到档案

*/

public void toSave() {

try {

TransformerFactory tf = TransformerFactory.newInstance()

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)

} catch (TransformerException mye) {

mye.printStackTrace()

} catch (IOException exp) {

exp.printStackTrace()

}

}

c# 建立xml档案

楼主 还是对xml不清楚啊

给你一个地址 你去看看吧

:bc-./Article/web/xml/

再给你些个例子 xmlnode是节点得意思要搞明白了啊

xmldocument xmldoc=new xmldocument()

xmlnode xn=xmldoc.CreateElement("root")

xmldoc.appendchild(xn)

xmldoc.save("e:\\?.xml")本地路径名字

java 读取xml档案部分内容 并建立新的xml档案

用java自带的就可以,有问题可以问我

import javax.xml.parsers.DocumentBuilder

import javax.xml.parsers.DocumentBuilderFactory

构造

public XMLUtil(String name) throws ParserConfigurationException {

filename = name

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance()

builder = factory.newDocumentBuilder()

document = builder.newDocument()

}

/**

* 储存到档案

*/

public void toSave() {

try {

TransformerFactory tf = TransformerFactory.newInstance()

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)

} catch (TransformerException mye) {

mye.printStackTrace()

} catch (IOException exp) {

exp.printStackTrace()

}

}

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela

如何建立XML档案

如何建立 XML 输入档案

SQL Server 2008 R2 其他版本 此主题尚未评级 评价此主题

如果是有经验的 XML 开发人员,您可以建立一些 XML 格式的档案,资料库引擎优化顾问可使用这些档案来优化工作负荷。若要建立这些 XML 档案,请使用您最喜爱的 XML 工具编辑示例档案,或者通过资料库引擎优化顾问 XML 架构生成例项。

资料库引擎优化顾问 XML 架构位于 MicrosoftSQL Server 安装的以下位置:

C:\Program Files\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\dta\dtaschema.xsd

此 Microsoft 网站上也线上提供了资料库引擎优化顾问 XML 架构。

单击此 URL 可开启一个包含许多 SQL Server XML 架构的页面。向下滚动页面,直至找到资料库引擎优化顾问所在的行。

建立 XML 输入档案以优化工作负荷

建立工作负荷。您可以通过使用 SQL Server Profiler中的优化模板来使用跟踪档案或表,或建立可产生典型 SQL Server 工作负荷的 Transact-SQL 指令码。有关详细资讯,请参阅如何建立工作负荷。

使用下列方法之一建立 XML 输入档案:

复制一个 XML 输入档案示例 (DTA) 并将其贴上到您最喜爱的 XML 编辑器。更改值来为安装的 SQL Server 指定适当的引数,然后储存 XML 档案。

使用您最喜爱的 XML 工具,通过资料库引擎优化顾问 XML 架构生成一个例项。

建立 XML 输入档案之后,将它用作 dta 命令列实用工具的输入来优化工作负荷。有关在此实用工具中使用 XML 输入档案的资讯

如何在Ruby程式中建立和解析XML档案

ruby里面,一般用nokogiri来解析和xml xml_doc = Nokogiri::XML("Alf")然后就可以对xml_doc进行节点的操作了。

ruby里面,一般用nokogiri来解析和xml

xml_doc = Nokogiri::XML("<root><aliens><alien><name>Alf</name></alien></aliens></root>")

然后就可以对xml_doc进行节点的操作了。

如何建立hibernate xml档案

很多人都在使用myEclipse,很多公司也都使用hibernate框架,老版本的hibernate中,由于没有annotation,我们需要写两个档案来维护表与物件的关系,写一个类,就要写一个hbm.xml档案,资料库表比较少就无所谓,但是多了就很麻烦,要一个一个的手写非常浪费时间,还有可能写错。新版的hibernate加入了annotation的形式来对映物件与资料库表之间的关系,虽然不需要写hbm.xml档案了,但是资料库表非常多的情况下,还是需要写很多的类。我们为何不找个工具自动帮我们生成这些档案呢?myEclipse就可以做到,下面我来讲解如何使用myEclipse来生成hibernate所需档案。

2. 开启myEclipse

3. 建立myEclipse工程

4. 选择web project

5.开启资料库透检视

在myEclipse右上角

点选右键

新增连线资料库所需驱动

测试是否联通

联通后Finish就可以了

6. 为专案新增hibernate支援

我们先回到myEclipse透检视

选中专案然后新增hibernate支援

7. 选择一些选项

选中刚才在资料库透视图里面建立的连线

完成后

8.反向生成

我们在回到资料库透检视

开启资料连线

开启刚刚建立的连线,然后开启使用者名称下的表

这个就是she使用者下的表,我们选中要反向生成的表,可以多选,然后点选右键

点选Hibernate Reverse Engineering…

选择你专案的src目录,填写一个反向生成后,类放哪个包下

Create a Hibernate mapping file (*.hbm.xml)这句话的意思是生成类和hbm.xml档案的,如果想生成annotation档案请选择下面的Add hibernate mapping annotations to POJO那个选项

这一步你可以什么都不选,如果确定资料库表都有主键,并且知道生成方式,你可以选择Id Generator

如果是uuid生成,可以选择

这步不选也可以,下一步也可以选择。

Include referenced tables (A->B)

Include referenced tables (A<-B)

这两个一定要选择,否则myeclipse不能给你生成一对多、多对多等对映,如果只想生成单项对映,可以去掉一个,一般我们都选择,双项对映。

在回到myEclipse透检视,检视专案

我们看到专案已经生成了对映档案和类。

已经生成了关系对映

Annotation方式的