xml文档
- 格式:doc
- 大小:1.05 MB
- 文档页数:30
xml文档数据更新的几种方法
XML文档数据更新的几种方法:
1. 手动编辑XML文件,即直接打开XML文件,在文本编辑器或XML编辑器中增删改查数据。
这种方法适用于不需要大量更新数据的情况。
2. 使用XML DOM API操作XML数据,即通过编程语言,如Java、Python等,调用XML DOM API库函数进行增删改查操作。
这种方法适用于需要对大量XML数据进行更新的情况,且具备一定的编程能力。
3. 使用XSLT技术更新XML数据,即通过定义样式表,将不同格式的XML数据转换成需要的格式,并进行增删改查操作。
这种方法适用于需要对XML数据进行复杂的转换和更新的情况,但需要具备一定的XSLT技术和XML数据结构设计能力。
4. 使用XML数据库管理系统,如eXist、MarkLogic等,通过SQL语句或API调用进行XML数据的增删改查操作,可实现多用户、高性能的XML数据管理。
但是这种方法需要使用专门的XML数据库管理系统,并具备相应的数据库管理知识。
xml使用方法XML使用方法XML(可扩展标记语言)是一种用于描述数据的标记语言,它可以用于在不同的系统之间传递和存储数据。
XML的使用方法非常灵活,可以用于各种不同的应用程序和场景。
本文将介绍XML的使用方法,包括XML的语法、DTD和XML Schema、XML解析和转换等。
XML的语法XML的语法非常简单,它由标签、属性和文本组成。
标签用于标识数据的类型,属性用于描述数据的属性,文本用于存储数据的值。
例如,下面是一个简单的XML文档:```<?xml version="1.0" encoding="UTF-8"?><bookstore><book category="cooking"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price></book><book category="children"><title lang="en">Harry Potter</title><author>J.K. Rowling</author><year>2005</year><price>29.99</price></book></bookstore>```在这个例子中,`<?xml version="1.0" encoding="UTF-8"?>`是XML 文档的声明,它指定了XML的版本和编码方式。
列举xml的文档结构XML(可扩展标记语言)是一种用于存储和传输结构化数据的标记语言,它具有自描述性和扩展性,被广泛应用于各种领域,例如Web应用程序、数据库系统和电子商务等。
XML文档结构由各种元素和标记组成,下面将列举和描述XML文档结构的相关参考内容。
1. XML声明(XML Declaration):XML声明是XML文档的开头,用于指定XML版本和使用的字符编码。
它以`<?xml version="1.0" encoding="UTF-8"?>`的格式出现,其中`version`属性指定XML版本,`encoding`属性指定字符编码。
2. 根元素(Root Element):XML文档的根元素是所有其他元素的父元素。
它是XML文档的顶层元素,包含整个文档的内容。
3. 元素(Element):XML文档中的元素是最基本的构建块,用于表示数据或信息。
元素由开始标签和结束标签组成,之间包含文本、子元素或属性等。
4. 属性(Attribute):XML元素可以具有属性,用于提供关于该元素的额外信息。
属性位于元素的开始标签中,由名称和值组成,中间使用等号连接。
5. 文本(Text):XML文档中的文本表示实际的数据或信息。
文本出现在元素的开始标签和结束标签之间,可以包含任意字符,包括空白字符和特殊字符。
6. 注释(Comment):XML文档中的注释用于添加对文档的解释或说明。
注释以`<!--`开头,以`-->`结尾,它们不会被解析器处理。
7. CDATA段(CDATA Section):CDATA段用于包含特殊字符和标记,它不会被解析器解析。
CDATA段以`<![CDATA[`开头,以`]]>`结尾,其中的内容作为原始文本处理。
8. 命名空间(Namespace):XML文档中的命名空间用于避免元素和属性名称的冲突。
XML⽂件详解以及解析⼀、xml基础详解:1、概述:xml:即可扩展标记语⾔,xml是互联⽹数据传输的重要⼯具,它可以跨越互联⽹任何的平台,不受编程语⾔和的限制,可以说它是⼀个拥有互联⽹最⾼级别通⾏证的数据携带者。
xml是当前处理结构化⽂档信息中相当给⼒的技术,xml有助于在服务器之间穿梭结构化数据,这使得开发⼈员更加得⼼应⼿的控制数据的存储和传输。
Xml⽤于标记电⼦⽂件使其具有结构性的标记语⾔,可以⽤来标记数据、定义数据类型,是⼀种允许⽤户对⾃⼰的标记语⾔进⾏定义的源语⾔。
Xml是标准通⽤标记语⾔(SGML)的⼦集,⾮常适合Web传输。
XML提供统⼀的⽅法来描述和交换独⽴于应⽤程序或供应商的结构化数据。
2、xml的特点及作⽤:特点:v xml与、编程语⾔的开发平台都⽆关;v 实现不同系统之间的数据交互。
作⽤:v 配置应⽤程序和⽹站;v 数据交互;v Ajax基⽯。
在配置⽂件⾥边所有的配置⽂件都是以XMl的格式来编写的。
跨平台进⾏数据交互,它可以跨操作系统,也可以跨编程语⾔的平台。
Ajax是现在⽬前⽐较流⾏的⼀个⽹络交互的技术。
Ajax⾥⾯最后⼀个x实际上就是xml的缩写。
Xml(Extensible Markup Language)是可扩展标记语⾔⼀个xml⽂档必须要有第⼀⾏的声明和它的⽂档元素的描述信息就可以了。
3、xml声明例⼦:注:xml声明⼀般是xml⽂档的第⼀⾏;xml声明由以下⼏个部分组成:4、根元素它是xml⽂档⾥⾯唯⼀的;它的开始是放在最前⾯,结束是放在最后⾯。
5、元素:(1) 所有的xml元素都必须有结束标签;(2) xml标签对⼤⼩写敏感;(3) xml必须正确地嵌套;(4)元素的命名规则:名称中可以包含字母、数字或者其他的字符;名称不能以数字或者标点符号开始;名称中不能包含空格。
(5)空元素6、属性(1)语法<元素名属性名=“属性值”/>例:<Student ID=“S100”><Name>Tom</Name></Student>(2)注意:属性值⽤双引号包裹;⼀个元素可以有多个属性,它的基本格式为:<元素名属性名=“属性值” 属性名=“属性值”>;属性值中不能够直接包含<.”,&。
XML⽂档的使⽤⽅法⼀、怎么样去写⼀个xml1. XML的定义:xml:可扩展标记语⾔所有的标签都可以⾃定义根据项⽬的需要和实际的场景进⾏⾃定义2. xml的作⽤a. xml是配置⽂件的载体b.xml可以做为数据传输的载体3. xml的书写规范a.xml有⼀个良好的结构必须有且只有⼀个根标签正确嵌套b.xml的标签是以尖括号包裹关键字成对出现有开始有结束关键字⾃定义c.xml可以有属性属性格式:属性="属性值" 多个属性之间使⽤空格d.xml可以有空标签e.xml区分⼤⼩写4. xml的组成a.⽂档声明:<?xml version="1.0" encoding="UTF-8"?> version:版本号 encoding:告知浏览器的解码⽅式b.根标签:只能有⼀个根元素c.普通标签(标签名可以完全⾃定义)d.属性(属性也可以完全⾃⼰定义)e.⽂本f.CDATA区:就是将原⽂显⽰(原⽂中可以包括特殊字符)⼆、怎么样去约束⼀个xml1. XML的约束的作⽤:指导怎样去写⼀个xml⽂件,需要符合约束条件(例如上图中,book必须要有 bookname的属性,这种情况就可以写XML约束)2. xml约束的种类a.DTD约束 (主要⽤于JAVAEE开发中)b.Schema约束(主要⽤于android开发中)1. DTD约束1. DTD约束的格式<!ELEMENT BookStore (book+)><!ELEMENT book (name,author,price)><!ELEMENT name (#PCDATA)><!ELEMENT author (#PCDATA)><!ELEMENT price (#PCDATA)><!ATTLIST book bookname CDATA #REQUIRED>注意事项:约束声明内容和标签名之间⼀定要有空格,否则会报错。
标准的xml文件格式XML(可扩展标记语言)是一种用于标记电子文档结构和数据的标准格式。
它被广泛应用于Web开发、数据交换和配置文件等领域。
标准的XML文件格式对于确保文档的正确性和可读性至关重要。
本文将介绍标准的XML文件格式,包括其基本结构、常见元素和属性,以及一些最佳实践。
XML文件由标签、元素、属性和数据组成。
标签是XML文档的基本构建块,用于定义元素和属性。
元素是标签的实例,用于表示文档中的数据结构。
属性是元素的附加信息,用于提供关于元素的额外描述。
数据则是元素或属性中的实际内容。
在标准的XML文件格式中,一个合法的XML文档必须包含一个根元素。
根元素是XML文档的顶层元素,所有其他元素都必须包含在根元素内部。
根元素还必须是唯一的,不能有多个根元素存在于同一个XML文档中。
除了根元素外,XML文档还可以包含注释、处理指令和空白字符。
注释用于向文档中添加说明性的文字,可以帮助他人理解文档的内容和结构。
处理指令用于指示解析器如何处理文档中的特定部分。
空白字符(如空格、制表符和换行符)用于格式化文档,但在某些情况下也可以影响文档的解析和处理。
在XML文件中,元素和属性的命名必须遵循一定的规则。
它们必须以字母、下划线或冒号开头,后面可以跟随任意数量的字母、数字、下划线、连字符或句点。
此外,元素和属性的命名是区分大小写的,因此<book>和<Book>被视为两个不同的元素。
另外,XML文件中还可以包含实体引用和CDATA部分。
实体引用用于表示一些特殊字符,如<表示小于号,&表示和号等。
CDATA部分用于包含文本块,其中的内容不会被解析器解析,而是作为原始数据处理。
在编写XML文件时,应该尽量遵循一些最佳实践,以确保文档的可读性和可维护性。
例如,应该使用缩进和换行来组织文档的结构,使其更易于理解和修改。
此外,应该为元素和属性选择描述性的名称,以便他人能够理解其含义和用途。
xmldoc方法【实用版3篇】目录(篇1)1.xmldoc 方法的概述2.xmldoc 方法的步骤3.xmldoc 方法的示例4.xmldoc 方法的优点与局限性正文(篇1)xmldoc 方法是一种将 XML 文档转换为 HTML 文档的方法,它可以帮助用户将 XML 数据轻松地展示在网页上。
这种方法在数据分析、网页设计和数据可视化等领域都有广泛的应用。
接下来,我们将详细介绍xmldoc 方法的步骤、示例以及它的优点与局限性。
一、xmldoc 方法的步骤xmldoc 方法主要包括以下几个步骤:1.创建一个 XML 文档。
用户需要先创建一个包含数据的 XML 文档。
例如,我们可以创建一个包含学生信息的 XML 文档,如下所示:```xml<students><student><name>张三</name><age>18</age><gender>男</gender></student><name>李四</name><age>19</age><gender>女</gender></student></students>```2.使用 xmldoc 方法将 XML 文档转换为 HTML 文档。
我们可以使用Python 中的第三方库 lxml 来实现这一功能。
首先,需要安装 lxml 库,然后使用以下代码将 XML 文档转换为 HTML 文档:```pythonfrom lxml import htmlxml_doc = """<students><student><name>张三</name><age>18</age><gender>男</gender></student><student><name>李四</name><age>19</age><gender>女</gender></students>"""html_doc = html.fromstring(xml_doc)```3.保存或展示 HTML 文档。
XML文件结构一个XML文件通常包含文件头和文件体两大部分1. 文件头XML文件头由XML声明与DTD文件类型声明组成。
其中DTD文件类型声明是可以缺少的,关于DTD声明将在后续的内容中介绍,而XML声明是必须要有的,以使文件符合XML的标准规格。
在前面的文件中的第一行代码即为XML声明:<xml version="" encoding="gb2312">其中:“<”代表一条指令的开始,“>”代表一条指令的结束;“xml”代表此文件是XML文件;“version="" ”代表此文件用的是标准;“encoding="gb2312" ”代表此文件所用的字符集,默认值为Unicode,如果该文件中要用到中文,就必须将此值设定为gb2312。
注意:XML声明必须出现在文档的第一行。
2. 文件体文件体中包含的是XML文件的内容,XML元素是XML文件内容的基本单元。
从语法讲,一个元素包含一个起始标记、一个结束标记以及标记之间的数据内容。
XML元素与HTML元素的格式基本相同,其格式如下:<标记名称属性名1="属性值1"属性名1="属性值1"……>内容</标记名称>所有的数据内容都必须在某个标记的开始和结束标记内,而每个标记又必须包含在另一个标记的开始与结束标记内,形成嵌套式的分布,只有最外层的标记不必被其他的标记所包含。
最外层的是根元素(Root),又称文件(Document)元素,所有的元素都包含在根元素内。
在前面的文件中,根元素就是<Flowers>,根元素必须而且只能有一个,在该文件有三个<Flower>子元素,这样的元素可以有多个。
XML的基本语法1. 注释XML的注释与HTML的注释相同,以“<!--”开始,以“-->”结束。
读写XML的四种方法XML(eXtensible Markup Language)是一种用于表示和传输数据的标记语言。
它具有良好的可读性和扩展性,被广泛应用于Web开发、数据交换和配置文件等领域。
在读写和处理XML数据时,有许多方法可供选择。
本文将介绍四种常见的读写XML的方法:DOM、SAX、JDOM、和XMLStreamReader/XMLStreamWriter。
1. DOM(Document Object Model):DOM是一种基于树形结构的解析器,它将整个XML文档加载到内存中,并将其表示为一个对象树。
在DOM中,每个XML元素都被表示为一个节点(Node),可以通过节点的属性和方法对其进行操作。
读取XML文档时,可以使用DOM解析器将其转换为一个DOM树,然后通过节点的方法访问和修改树结构。
写入XML文档时,可以通过创建和修改节点来构建DOM树,并使用DOM解析器将其保存为XML文档。
使用DOM读取XML文档的基本步骤如下:- 创建一个DocumentBuilderFactory对象。
- 根据DocumentBuilderFactory对象创建一个DocumentBuilder对象。
- 使用DocumentBuilder对象解析XML文档,并返回一个Document对象。
- 通过Document对象的方法遍历和操作XML文档的节点。
使用DOM写入XML文档的基本步骤如下:- 创建一个DocumentBuilderFactory对象。
- 根据DocumentBuilderFactory对象创建一个DocumentBuilder对象。
- 使用DocumentBuilder对象创建一个Document对象。
- 通过Document对象的方法创建和添加元素节点、属性节点等。
- 使用TransformerFactory和Transformer对象将Document对象保存为XML文档。
DOM的优点是易于使用和理解,可以方便地遍历和修改XML文档。
北京xx有限公司XML标准文件说明1. 绪论 (2)1.1 开发者和开发目标 (2)1.2 术语 (3)2. 文档 (4)2.1 格式良好的(Well-Formed)XML文档 (4)2.2 字符 (5)2.3 通用句法成分 (5)2.4 字符数据和标记 (6)2.5 注释 (7)2.6 处理指令 (7)2.7 CDATA段 (8)2.8 序言(prolog)和文档类型声明 (8)2.9 独立文档声明 (10)2.10 空白域处理 (11)2.11 行尾处理 (11)2.12 语言标识 (12)2.13字符集错误 (13)2.14标签分类 (13)2.15标签要求 (13)2.16 xml嵌套子元素 (13)2.17 xml嵌套子元素 (14)2.18 整体结构 (15)3. 逻辑结构 (15)3.1 起始标记,结束标记和空元素标记 (16)3.2 元素类型声明 (17)3.2.1 元素内容 (18)3.2.2 混合型内容(Mixed Content) (19)3.3 属性表声明 (19)3.3.1 属性类型 (20)3.3.2 属性缺省值 (21)3.3.3 属性-值对的规范化(Attribute-Value Normalization) (22)3.4 条件段(Conditional Sections) (22)5. 一致性(Conformance) (23)5.1 进行验证和不进行验证的处理器(Validating and Non-Validating Processors) (23)5.2 使用XML处理器 (24)6. 符号(Notation) (24)7 完整的XML DEMO (25)1. 绪论可扩展标记语言,缩写为XML,描述了一类称为XML文档的数据对象,同时也部分地描述了处理这些数据对象的计算机程序的行为。
XML是SGML(标准通用标记语言[ISO 8879])针对应用的一个子集,或者说是SGML的一种受限形式。
对Xml⽂档进⾏操作(修改,删除)<?xml version="1.0" encoding="utf-8"?><Products><Product id="0" proName="aa1" proPrice="12" proInfo="bb"></Product><Product id="1" proName="电脑" proPrice="3200" proInfo="电脑电脑电脑电脑电脑电脑"></Product><Product id="2" proName="mp4" proPrice="400" proInfo="mp4mp4mp4mp4mp4mp4mp4mp4mp4"></Product><Product id="3" proName="mp4" proPrice="400" proInfo="mp4mp4mp4mp4mp4mp4mp4mp4mp4"></Product><Product id="4" proName="mp5" proPrice="500" proInfo="mp5mp5mp5mp5mp5mp5mp5mp5mp5"></Product></Products>下⾯我们来看看如何对上⾯的xml⽂档进⾏删除和修改的操作:其实很简单,⼤概也是分⼀下⼏个步骤:1、将xml⽂档加载到内存中2、找到要删除的节点(根据条件)3、重新保存加载xml⽂档根绝代码具体来看看如何操作修改:protected void Button2_Click(object sender, EventArgs e){XmlDocument xmldocument = new XmlDocument();string path = Server.MapPath("~/Product.xml");xmldocument.Load(path);string xmlPath = "//Products//Product";//根据路径找到所有节点XmlNodeList nodeList = xmldocument.SelectNodes(xmlPath);//循环遍历这些⼦foreach (XmlNode node in nodeList){//根据节点的某个属性找到要操作的节点if(node.Attributes["id"].Value=="4"){//对节点进⾏修改操作node.Attributes["proName"].Value = "aa1";node.Attributes["proPrice"].Value = "12";node.Attributes["proInfo"].Value = "bb";}}//重新加载保存xmldocument.Save(path);}上⾯是对xml进⾏的修改的操作,删除基本和它差不多删除protected void Button1_Click(object sender, EventArgs e){XmlDocument doc = new XmlDocument();string path = Server.MapPath("~/Product.xml");doc.Load(path);XmlNodeList xmlNodeList = doc.SelectNodes("//Products//Product");foreach (XmlNode xmlNode in xmlNodeList){if(xmlNode.Attributes["id"].Value=="4"){//找到⽗节点,从⽗节点删除该节点xmlNode.ParentNode.RemoveChild(xmlNode);}}doc.Save(path);}当然了,也可以删除通过RomoveAllAttributes,RemoveAttribute或RemoveAttributeAt等来删除属性前端时间,在⼀本项⽬教材书上,看到他们对Xml⽂档处理的时候,在查找节点的时候⽤的是索引XmlNode xmlNode = doc.SelectSingleNode("//Products//Product[5]");本⼈认为这种⽅法不可取,我们⼀般都会让你⼀个id对应⼀个节点,如果采取这种⽅式,那么很可能⽆法找到需要的节点,造成程序⽅⾯的错误,这是本⼈的⼀些见解,⼤家有什么意见可以提出来,共同学习!。
合并XML⽂件问题:有如下的两个 XML ⽂件,将其合并为⼀个 XML ⽂档,并输出。
第⼀个 XML ⽂档<?xml version="1.0" encoding="utf-8"?><root><a>A</a><b>B</b></root>第⼆个 XML ⽂档<?xml version="1.0" encoding="utf-8"?><root><b>B</b></root>要点:对于 XML ⽂档中的节点,除了通常的 ParentNode, PreviousSibling, NextSibling , FirstChild, LastChild属性等之外,还有⼀个重要的属性OwnerDocument, 表⽰节点所属的⽂档对象,这是⼀个只读的属性,不能直接赋值。
要改变节点所属的⽂档,可以使⽤⽬标⽂档对象的 ImportNode 来改变节点所属的⽂档,这个⽅法的定义如下:public virtual XmlNode ImportNode(XmlNode node,bool deep)deep 表⽰是否将节点的⼦节点也导⼊到当前⽂档。
代码:using System;using System.Xml;namespace XmlAppand{class Program{static void Main(string[] args){XmlDocument doca = new XmlDocument();doca.Load("A.xml");XmlDocument docb = new XmlDocument();docb.Load("B.xml");// 分别获取两个⽂档的根元素,以便于合并XmlElement rootA = doca.DocumentElement;XmlElement rootB = docb.DocumentElement;// 创建⼀个合并的 documentXmlDocument result = new XmlDocument();// 创建根元素XmlElement root = result.CreateElement("root");result.AppendChild(root);foreach (XmlNode node in rootA.ChildNodes){// 先导⼊节点XmlNode n = result.ImportNode(node, true);// 然后,插⼊指定的位置root.AppendChild(n);}// 同上foreach (XmlNode node in rootB.ChildNodes){XmlNode n = result.ImportNode(node, true);root.AppendChild(n);}result.Save(Console.Out);}}}。
SAP系统中XML文件的两种转换方法在SAP系统中,XML文件的转换方法有两种:通过ABAP编程和使用标准转换器。
第一种是通过ABAP编程实现XML文件的转换。
ABAP是SAP系统中的编程语言,可以使用ABAP编写代码来处理和转换XML文件。
下面是实现XML文件转换的步骤:1.解析XML文件:首先需要读取和解析XML文件,将其转换为可操作的XML文档对象。
可以使用ABAP提供的类和方法来实现这一步骤,如使用CL_XSLT_PROCESSOR类中的方法LOAD_XML方法来加载XML文档。
2.转换XML结构:一旦XML文件被解析并转换为可操作的XML文档对象,就可以对XML文档进行结构转换。
可以通过修改XML文档对象的属性和节点,重新组织文档的结构。
可以使用ABAP提供的类和方法来实现这一步骤,如使用CL_XML_DOCUMENT类中的方法MODIFY_DOCUMENT方法来修改XML文档。
3.生成XML文件:在完成XML结构转换后,可以将修改后的XML文档对象生成为新的XML文件。
可以通过将XML文档对象转换为字符串,并写入到文件中来实现这一步骤。
可以使用ABAP提供的类和方法来实现这一步骤,如使用CL_XML_DOCUMENT类中的方法GET_STRING方法来获取XML文档对象的字符串表示。
第二种方法是使用标准转换器来实现XML文件的转换。
SAP系统提供了许多标准转换器,用于将不同格式的数据转换为XML格式或将XML格式的数据转换为其他格式。
下面是使用标准转换器实现XML文件转换的步骤:2.执行转换:一旦定义了转换规则,就可以执行转换操作。
可以使用SAP提供的转换工具或API来执行转换操作,如使用SAP交易码STRANS (数据交换:传输转换)来执行转换操作。
3.检查和验证转换结果:在转换操作完成后,需要对转换结果进行检查和验证,确保转换结果符合预期。
可以使用SAP提供的工具或API来检查和验证转换结果,如使用SAP交易码SXMB_MONI(消息监控)来监控和验证XML消息的传输和转换结果。
XmlDocument xDoc = new XmlDocument();xDoc.Load("X.xml");foreach (XmlElement elem in xDoc.SelectNodes("/data/a/item"))Console.WriteLine(lst.InnerText);Console.ReadKey();static void Main(string[] args){XmlDocument xDoc = new XmlDocument();xDoc.Load("X.xml");XmlNodeList lst = xDoc.ChildNodes[1].ChildNodes[1].ChildNodes ;for (int i=0;i< lst.Count ;i++)Console.WriteLine(i.ToString()+lst.Item(i).Name );foreach (XmlNode n in lst)Console.WriteLine( );Console.ReadKey();}读取有namespace的Xml<?xml version="1.0"encoding="utf-8"?><smmd:name xmlns:smmd="nxchj"><smmd:a>1001</smmd:a><smmd:a>2001</smmd:a><smmd:a>10055</smmd:a><smmd:a><s>120011</s><ss>2000</ss></smmd:a></smmd:name>static void Main(string[] args){XmlDocument xDoc = new XmlDocument();xDoc.Load("X.xml");XmlNamespaceManager ns = new XmlNamespaceManager(Table );ns.AddNamespace("smmd", "nxchj");foreach (XmlElement elem in xDoc.SelectNodes("/smmd:name/smmd:a",ns)) Console.WriteLine(elem.InnerText );Console.ReadKey();}C#操作xml引用命名空间:using System.Xml1.检查所要操作的xml文件是否存在:System.IO.File.Exists(文件路径及名称);2.得到xml文件:(1)在中可以这样得到:XmlDocument xmlDoc = new XmlDocument();//导入xml文档xmlDoc.Load( Server.MapPath("xmlTesting.xml"));//导入字符串//xmlDoc.LoadXml("<bookStore> <book id="01" price="3.5元"> 读者</book></bookStore>");注:Server.MapPath("xmlTesting.xml")此时的xmlTesting.xml文件必须是在当前的解决方案里;同样可以写成完整的物理路径xmlDoc.Load (@"E:"软件学习"测试"myNoteWeb"xmlTesting.xml")(2)在windForm中直接用物理路径得到所要操作的xml文件具体实现方法同上3.创建xml文件:XmlDocument xmlDoc = new XmlDocument(); //创建xml文档(实例化一个xml)XmlNode root = xmlDoc.CreateElement("bookStore");//创建根节点//创建第1个子结点:XmlNode bookNode = xmlDoc.CreateElement("book");bookNode.InnerText = "读者";//为此节点添加属性法1:bookPublishNode.SetAttribute("id", "01")root.AppendChild(bookNode);法2:XmlAttribute xmlattribute = tempXmlDoc.CreateAttribute("price");xmlattribute.Value = "3.5元";tempRoot .Attributes .Append (xmlattribute )//创建第2个根节点的子结点:XmlNode tempBookNode = xmlDoc.CreateElement("tempbook ");tempBookNode.InnerText ="文摘";root.AppendChild(tempBookNode);c#操作Xml(一)Xml作为一个非常重要的纯文本格式已经进入了编程的很多领域,作为一个面向应用层面的c#也一样在很多领域离不开Xml。
但是,c#在很多方面对Xml做了写封装,以至于很多操作Xml的代码,都不需要手动去写。
例如,c#写WebService这种需要大量操作Xml的服务,除了极其个别的情况下,基本看不到任何操作Xml的代码。
这是c#的一个优势,但是,最近发现正是这样一些c#的优势,导致了新一代c#程序员的能力退化。
因为90%的情况下,不需要手动操作Xml,所以,年轻的c#程序员也觉得没必要为了这10%的情况,而去学如何手工读写Xml。
真不知道,ms 提供了这么简便的工具,是ms做的善事还是作的孽。
好吧,废话就不说了,转入主题。
1.如何用Xml Dom的方式读取XmlXml Dom方式是最原始的一种操作Xml的途径,从.net Framework 1.0开始就开始支持Dom方式。
1.1如何以Dom方式加载Xml要读取Xml首先要加载Xml,加载的方式有两种,一种是从流或类似的Reader加载,例如:当然还可以从字符串加载:1.1读取无namespace的XmlXml已经准备好了,下面就开始读取这个Xml。
现在希望读取data节下面的所有item中的text,那么就可以:看看运行结果:但是,这样写的问题有很多,例如在data节点中有非item的节点,这样访问,也就被无差别的把非item项也写出来了。
例如把如果数据改成这样:这样,在data节里面,除了4个item,还有一个other,这个other是不需要的,必须被排除掉,如果直接用第一中ChildNodes去访问的话,会得到这样的结果:显然“!@#”也被选择出来了,这可不是我们所期望的,所以,改用XPath的方式访问:其运行结果为:很好的other项排除在需要的节点外,这才是我们真正想要的结果:)1.2读取有namespace的Xml和c#一样Xml也有namespace,并且namespace在Xml中的作用巨大,也许你并未感受到namespace的作用,但是,你可能已经不得不面对那些有namespace的Xml了。
好吧,我们先加载一个有namespace的xml:这里,我们准备了一个namespace——urn:vwxyzh,并且把这个namespace缩写成v。
举个例子来说,v:data就是urn:vwxyzh这个namespace下面的data。
现在再用原来的XPath去跑一下:Oh, no!一个也没有选择出来,为什么会这样哪?因为原来的/data/item中的data节是没有namespace的data,和urn:vwxyzh的data不是一回事,所以,这个XPath根本定为不到任何节点。
必须要修改部分代码才能达到我们的目的,先来看看Select方法有哪些重载吧:第一个重载,就是之前使用的那个,第二个重载,需要额外提供一个XmlNamespaceManager实例,一看名字就知道,这个实例是用于管理Xml的Namespace的。
再查看一下这个类的成员:可以发现,创建这个实例需要一个XmlNameTable,谁能提供这个XmlNameTable的实例哪?XmlDocument本身就提供了这个XmlNameTable:c#操作Xml(二)2 用Dom的方式创建/修改xml上一篇讲了如何用dom的方式读一个xml,这一篇就讲一下如何用dom的方式去写一个xml。
不过,用dom的写Xml本身并不是一个好主意,因为Dom方式本身的废话超多,做一个简单的事情就需要好几句语句,但是作为一个基本的方式还是有必要了解一下的。
2.1 用Dom的方式去创建xml如果想写出这样一个xml:那么你可能需要这样一大段代码:分析一下,在dom方式下要创建任何一个xml的节点都必须要使用XmlDocument的对应的Create方法创建,然后再添加到对应的位置,这也就是Dom方式最麻烦的地方。
看看运行结果:这个xml和我们期望的xml是等价的,只是没有被格式好,好吧,想要一个格式化好的文档,那么就修改一下写xml的部分(在讲xmlwriter的时候还会讲到这个setting类):再看看运行结果:这样就和期望的xml一致了。
2.2 用Dom的方式去创建有namespace的xml如果有namespace的xml怎么创建哪?其实也很简单,换一个重载就可以了,在创建节点的时候用带有namespace的重载就可以了:再看一下结果:2.3 用Dom的方式去修改xml修改xml其实也无非就是读取xml然后再做必要的增删改。
在修改之前,首先当然就是要定为到xml的节点,这个在第一篇里面已经讲过。
如果所做的修改是添加节点那么基本上就和上一节的内容相似:在原来这个xml的基础上添加一个person——Allen Lee,可以看到几乎就是把第一篇的读xml和前一节的创建xml结合起来,开看看运行结果吧:那么删除节点怎么办哪?例如,要从已经有多个Person的xml中,删除凡是FirstName叫Allen的Person,就可以这样写:注意,这里用了个XPath去查询所有的FirstName叫Allen的Person,也就是:/v:persons/v:person[v:firstName='Allen']v是namespace,之前用已经解释过了,这个XPath要找的是根节点里面的(/)persons 节点(v:persons)里面的(/)person节点(v:person),那么[]在这里是什么意思哪?[]中间的部分代表条件约束,或者说是where,前面的XPath部分已经选择person节点,现在对找到的Person做个条件约束,条件的内容是firstname的值需要是Allen(v:firstName=’Allen’)。