XMLDocument对xml文件的增删改查操作
java xmldocument类的用法

一、概述Java语言是一种跨评台的面向对象编程语言,被广泛应用于企业级应用程序开发领域。
XML(可扩展标记语言)是一种通用的标记语言,用于描述数据的结构和内容。
在Java中,XMLDocument类被用来表示一个XML文档,可以对XML文档进行创建、解析、修改和验证等操作。
二、XMLDocument类的概述1. XMLDocument类位于org.w3c.dom包中,是DOM(文档对象模型)的一部分。
它表示了整个XML文档的树形结构,包括文档的根节点、元素节点、属性节点、文本节点等。
2. XMLDocument类实现了Document接口,提供了操作XML文档的方法。
三、XMLDocument类的基本用法1. 创建XMLDocument对象可以通过DocumentBuilder类的实例来创建一个空的XMLDocument对象。
首先需要创建一个DocumentBuilder对象,然后使用它来创建一个Document对象。
2. 解析XML文档XMLDocument类提供了方法来解析XML文档,例如通过解析器(如SAX解析器或DOM解析器)解析XML文档,并将其转换为XMLDocument对象。
3. 遍历XML文档XMLDocument类提供了方法来遍历XML文档的节点,例如获取文档的根节点、获取子节点、获取父节点、获取兄弟节点等。
4. 修改XML文档XMLDocument类提供了方法来对XML文档进行修改,例如添加节点、删除节点、修改节点的属性和文本内容等。
5. 验证XML文档XMLDocument类提供了方法来验证XML文档的合法性,例如验证文档的结构、验证文档的数据类型等。
6. 将XMLDocument对象序列化为XML文档XMLDocument类提供了方法来将XMLDocument对象序列化为XML文档的字符串表示,以便于存储或传输。
四、XMLDocument类的示例代码以下是一个简单的示例代码,演示了如何创建一个XMLDocument对象,并对其进行一些基本操作。
xml文档数据更新的几种方法

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数据库管理系统,并具备相应的数据库管理知识。
单表操作的增删改查开发流程

1,建立单表维护模块需要维护的实体详见增删改查模块的表单配置开发模式中的建实体2,填写配置文件1).配置system-PortletEntities.xml文件,建立栏目,拷贝一段已有的配置代码<portletEntity><name>pygl.szpkxnxqsj</name><portlet-name>pygl.szpkxnxqsj</portlet-name><title>设置排课学年学期时间</title><description>设置排课学年学期时间</description><keywords>设置排课学年学期时间</keywords></portletEntity>修改其中的name、portlet-name、title、description、keywords五个属性。
填写你需要的开发的模块的信息2).配置portlet.xml文件,实现栏目,拷贝一段已有的配置代码,如:<portlet><portlet-name>pygl.szpkxnxqsj</portlet-name><display-name>设置排课学年学期时间</display-name><portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class><init-param><name>contextConfigLocation</name><value>/WEB-INF/portlet-config/pkcssz/pygl.szpkxnxqsj.xml</value></init-param><supports><mime-type>text/html</mime-type><portlet-mode>view</portlet-mode></supports><portlet-info><title>设置排课学年学期时间</title></portlet-info></portlet>修改其中<portlet-name>、<title>、<display-name>分别和system-PortletEntities.xml中配置的<portlet-name>、<title>、<description>严格一致,不然之后搜索栏目,配置成功后栏目中找不到相应的内容。
Oracle之xml的增删改查操作

Oracle之xml的增删改查操作⼯作之余,总结⼀下xml操作的⼀些⽅法和⼼得!tip: xmltype函数是将clob字段转成xmltype类型的函数,若字段本⾝为xmltype类型则不需要引⽤xmltype()函数同名标签⽤数组取值的⽅式获取,但起始值从1开始⼀.查询(Query)1. extract函数,查询节点值,带节点名1-- 获取带节点的值,例如:<tel>222</tel>2select extract(xmltype(e.prj_xml),'/data/project/persons/person[1]/tel').getStringVal() as title from project e where e.zh_title='⽩夜追逐繁星';3-- 备注如果节点表达式查询⼀个节点的⽗节点,则会将该⽗节点下的所有节点包含该⽗节点查出 Query Result:tip: extract函数中路径引⽤text(),查询的节点若重复则⾃动拼接select extractvalue(xmltype('<a><b>1</b><b>2</b></a>'),'/a/b') from dual; -- 报错,报只返回⼀个节点值,因为在a标签下存在两个同名标签bselect extract(xmltype('<a><b>1</b><b>2</b></a>'),'/a/b/text()') from dual; -- extract+text() 解决同名节点问题,若存在重复节点会⾃动拼接在⼀起,但不使⽤任何拼接符号2. extractvalue函数,查询节点值,不带节点名-- 获取不带节点的值,例如:2221 select extractvalue(xmltype(e.prj_xml),'/data/project/persons/person[1]/tel') as result from project e where e.zh_title='⽩夜追逐繁星';Query Result:Tip: 节点不存在时,查询结果均为空3. existsnode函数,判断节点是否存在,表⽰存在,0表⽰不存在1 select existsnode(xmltype(e.prj_xml),'/data/project/persons/person[1]/tel') as result from project e where e.zh_title='⽩夜追逐繁星';Query Result:4. sys_dburigen,将指定列通过函数⽣成⼀个该列的URI值,例如:/PUBLIC/PROJECT/ROW[ZH_TITLE='邹成咁180117']/ZH_TITLE1 select sys_dburigen(e.zh_title) as result from project e where e.zh_title='⽩夜追逐繁星';Query Result:5. sys_xmlAgg,合并查询,将多个xml合并,类似于set集合-- sys_xmlGen 将xml转成xmltype实例,⽅便xml合并,sys_xmlAgg⽤于xml合并1 select sys_xmlAgg(sys_xmlgen(e.prj_xml)) as result from project e where e.zh_title='⽩夜追逐繁星'or e.zh_title='⽩夜追逐繁星2' ;Query Result:6. xmlforest,将指定列以xml格式查询出来,可指定⽣成的xml节点名称1 select xmlforest(e.zh_title as zhTitle,e.prj_no as prjNo,e.psn_code as psnCode).getStringVal() as xml from project e where e.zh_title='⽩夜追逐繁星';Query Result:7. xmlelement,为查询出来的xml添加挂载的⽗节点,并将xml字符串格式化成xml ,与xmlforest函数配套使⽤1 select xmlelement(data,xmlforest(e.zh_title,e.prj_no,e.psn_code)).getStringVal() as xml from project e where e.zh_title='⽩夜追逐繁星';Query Result:延伸:为data节点添加属性,使⽤xmlattributes函数1 select xmlelement(data,xmlattributes(e.prj_code as code),xmlforest(e.zh_title,e.prj_no,e.psn_code)).getStringVal() as xml from project e where e.zh_title='⽩夜追逐繁星';Query Result:延伸: XMLCOLATTVAL效果等同于xmlforest函数,但默认会为每个标签添加⼀个属性name,属性值为列明,若未指定列别名,默认该列列明1 select XMLCOLATTVAL(e.zh_title as zhTitle,e.prj_no as prjNo,e.psn_code as psnCode).getStringVal() as xml from project e where e.zh_title='⽩夜追逐繁星'Query Result:8. xmlConcat,xmlType实例之间联结1select xmlelement(data,xmlConcat(xmltype('<a>1</a>'),xmltype('<b>1</b>'))).getStringVal() as result from dual;Query Result:9. xmlsequence将⼀个xml以标签为单位,转换成数组,也就是⼀⾏⾏记录1select e.getStringVal() as result2from table(xmlsequence(extract(xmltype('<a><b>233</b><c>666</c><d>88</d></a>'),'/a/*'))) e;Query Result:⼆.添加(Insert)-- 添加xml节点,insertchildxml添加xml节点,参数3默认指定插在该节点后,若该节点不存在,则追加到⼦节点集合的末尾-- 添加xml节点,insertchildxmlbefore,和insertchildxmlafter添加xml节点,参数3指定插在该节点前或者后,若该节点不存在,则追加到⼦节点集合的末尾1update project e set e.prj_xml=insertchildxml(xmltype(e.prj_xml),'/data/project/persons/person[1]','tel',xmltype('<tel>222</tel>')).getClobVal() where e.zh_title='⽩夜追逐繁星';2update project e set e.prj_xml=insertchildxmlbefore(xmltype(e.prj_xml),'/data/project/persons/person[1]','psn_code',xmltype('<tel>111</tel>')).getClobVal() where e.zh_title='⽩夜追逐繁星';三.修改(Update)-- updatexml⽤于更新节点值1-- updatexml⽤于更新节点值,参数1:需要修改节点的xml字段;参数2:节点路径;参数3:值2update project e set e.prj_xml=updatexml(xmltype(e.prj_xml),'/data/project/persons/person[1]/tel','<tel>111</tel>').getClobVal() where e.zh_title='⽩夜追逐繁星';3update project e set e.prj_xml=updatexml(xmltype(e.prj_xml),'/data/project/persons/person[1]/tel/text()','222').getClobVal() where e.zh_title='⽩夜追逐繁星';tip: getClobVal()是将xmltype类型转成clob类型⽅法四.删除(Delete)1-- 删除xml节点,参数1:需要删除节点的xml字段;参数2:节点路径;2update project e set e.prj_xml=deletexml(xmltype(e.prj_xml),'/data/project/persons/person[1]/tel').getClobVal() where e.zh_title='⽩夜追逐繁星';。
sql xml中的modify用法

sql xml中的modify用法SQL中的XML是指在数据库中存储和操作XML文档,XML在数据库中广泛应用于数据交换和Web服务。
XML文档根据其结构和元素,可以通过SQL语句内置的XML函数进行查询、更新、删除等操作。
XML中的modify是XML修改操作的一种方法,本文将详细介绍SQL中的modify用法。
I. Modify函数的作用在SQL中,Modify函数是用来修改XML文档的一种函数,通过该函数可以实现添加、删除、替换、移动、复制等功能。
Modify函数一般用于更新XML文档中的节点,然后将修改后的节点重新保存回数据库中。
SQL中Modify函数的语法如下:modify (XML DML)其中,XML DML是XML数据修改语言(XML Data Modification Language)的缩写,它是SQL Server和Oracle数据库中一种特殊的语言,用于操作XML文档中的节点及其属性。
1. 添加节点Modify函数可以使用insert子句在XML文档中添加节点,其语法如下:modify(insert XPath '内容' [before/after location])其中,XPath表示要添加节点的位置,‘内容’表示要添加的节点内容,[before/after location]表示在某个节点之前或之后添加。
示例如下:2. 删除节点modify(delete XPath)其中,XPath表示要删除的节点位置。
--删除id为1的数据中,xpath为/data/row[2]UPDATE table1 xmldata.modify('delete (/data/row[2])')3. 替换节点其中,XPath是要替换的节点位置,'新节点内容'是替换后节点的内容。
4. 移动节点5. 复制节点1. Modify函数只能用于XML文档的修改操作,不能用于读取操作,但是SQL内置的其他XML函数可以读取XML文档中的内容。
读写XML的四种方法

读写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文档。
对Xml文档进行操作(修改,删除)

对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对应⼀个节点,如果采取这种⽅式,那么很可能⽆法找到需要的节点,造成程序⽅⾯的错误,这是本⼈的⼀些见解,⼤家有什么意见可以提出来,共同学习!。
C#操作xml:增,删,改,查

c#操作xml/e/404232246.htm同样是增,删,改,查四种操作。
现在我们就详细介绍一下增和删两种操作。
看下面的一个xml示例:<?xml version="1.0" encoding="utf-8"?><phonebook><member id="6"><name>456</name><qq>5465</qq></member><member id="5"><name>jjjjj</name><qq>3456789</qq></member></phonebook>xml的每个节点分为节点名称,节点值和属性三类,如:member节点:id为其一个属性,menber为其节点名称。
再如:name节点456为其节点值。
如果我们需要增加一个节点可以调用一下几个方法:/// <summary>/// 在根节点下添加父节点/// </summary>public static void AddParentNode(string xmlPath,string parentNode){XmlDocument xdoc = new XmlDocument();xdoc.Load(xmlPath);// 创建一个新的menber节点并将它添加到根节点下XmlElement Node = xdoc.CreateElement(parentNode);xdoc.DocumentElement.PrependChild(Node);xdoc.Save(xmlPath);}#region 插入一节点,带一属性/// <summary>/// 插入一节点,带一属性/// </summary>/// <param name="xmlPath">Xml文档路径</param>/// <param name="MainNode">当前节点路径</param>/// <param name="Element">新节点</param>/// <param name="Attrib">属性名称</param>/// <param name="AttribContent">属性值</param>/// <param name="Content">新节点值</param>public static void XmlInsertElement(string xmlPath, string MainNode, string Element,string Attrib, string AttribContent, string Content){XmlDocument objXmlDoc = new XmlDocument();objXmlDoc.Load(xmlPath);XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);XmlElement objElement = objXmlDoc.CreateElement(Element);objElement.SetAttribute(Attrib, AttribContent);objElement.InnerText = Content;objNode.AppendChild(objElement);objXmlDoc.Save(xmlPath);}#endregion#region 插入一节点不带属性public static void XmlInsertElement(string xmlPath, string MainNode, string Element, string Content){XmlDocument objXmlDoc = new XmlDocument();objXmlDoc.Load(xmlPath);XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);XmlElement objElement = objXmlDoc.CreateElement(Element);objElement.InnerText = Content;objNode.AppendChild(objElement);objXmlDoc.Save(xmlPath);}#endregion#region 向一个节点添加属性/// <summary>/// 向一个节点添加属性/// </summary>/// <param name="xmlPath">xml文件路径</param>/// <param name="NodePath">节点路径</param>/// <param name="NodeAttribute1">要添加的节点属性的名称</param>/// <param name="NodeAttributeText">要添加属性的值</param>public static void AddAttribute(string xmlPath, string NodePath, string NodeAttribute1, string NodeAttributeText){XmlDocument objXmlDoc = new XmlDocument();objXmlDoc.Load(xmlPath);XmlAttribute nodeAttribute = objXmlDoc.CreateAttribute(NodeAttribute1);XmlNode nodePath = objXmlDoc.SelectSingleNode(NodePath);nodePath.Attributes.Append(nodeAttribute);XmlElement xe = (XmlElement)nodePath;xe.SetAttribute(NodeAttribute1, NodeAttributeText);objXmlDoc.Save(xmlPath);}#endregion如想要加入一个member的父节点,属性id值为7你可以这样来做://取得xml文件的路径string xmlPath = Server.MapPath("~/test.xml");string parentNode="member";//在根节点下添加父节点memberXmlHelper.AddParentNode(xmlPath, parentNode);//刚添加的member节点添加一XmlHelper.AddAttribute(xmlPath, "phonebook/member", "id", "7");则xml文件就会变成这样<?xml version="1.0" encoding="utf-8"?><phonebook><member id="6"><name>456</name><qq>5465</qq></member><member id="5"><name>jjjjj</name><qq>3456789</qq></member><member id="7"></member></phonebook>向新添加的节点member(id=7)的节点下加入节点名称为qq,值为123456的新节点,你可以这样做XmlHelper.XmlInsertElement(xmlPath, "//member[@id="7"]", "qq", "123456");则输出的xml为:<?xml version="1.0" encoding="utf-8"?><phonebook><member id="6"><name>456</name><qq>5465</qq></member><member id="5"><name>jjjjj</name><qq>3456789</qq></member><member id="7"><qq>123456</qq></member></phonebook>增加节点我们就介绍到这里,只要你基本掌握了xpath语法,融会贯通,就可以利用上面几个公用方法对xml文件进行增加操作下面我们介绍一下删除操作,删除共有两种,一是删除某一节点,一种是删除某一节点的属性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
从结构上讲.XmlElement是XmlNode 派生类. 所以两者比较没什么意义. XmlNode 为抽像类, 不能直接实例化.已知有一个xml文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312"?><bookstore><book genre="fantasy" ISBN="2-3631-4"><title>Oberon's Legacy</title><author>Corets, Eva</author><PRice>5.95</price></book></bookstore>1、往<bookstore>节点中插入一个<book>节点:XmlDocument xmlDoc=new XmlDocument();xmlDoc.Load("bookstore.xml");XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore> XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点xe1.SetAttribute("genre","李赞红");//设置该节点genre属性xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性XmlElement xesub1=xmlDoc.CreateElement("title");xesub1.InnerText="CS从入门到精通";//设置文本节点xe1.AppendChild(xesub1);//添加到<book>节点中XmlElement xesub2=xmlDoc.CreateElement("author");xesub2.InnerText="候捷";xe1.AppendChild(xesub2);XmlElement xesub3=xmlDoc.CreateElement("price");xesub3.InnerText="58.3";xe1.AppendChild(xesub3);root.AppendChild(xe1);//添加到<bookstore>节点中xmlDoc.Save("bookstore.xml");//===============================================结果为:<?xml version="1.0" encoding="gb2312"?><bookstore><book genre="fantasy" ISBN="2-3631-4"><title>Oberon's Legacy</title><author>Corets, Eva</author><price>5.95</price></book><book genre="李赞红" ISBN="2-3631-4"><title>CS从入门到精通</title><author>候捷</author><price>58.3</price></book></bookstore>2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点foreach(XmlNode xn in nodeList)//遍历所有子节点{XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”{xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点foreach(XmlNode xn1 in nls)//遍历{XmlElement xe2=(XmlElement)xn1;//转换类型if(=="author")//如果找到{xe2.InnerText="亚胜";//则修改break;//找到退出来就可以了}}break;}}xmlDoc.Save("bookstore.xml");//保存。
//==================================================最后结果为:<?xml version="1.0" encoding="gb2312"?><bookstore><book genre="fantasy" ISBN="2-3631-4"><title>Oberon's Legacy</title><author>Corets, Eva</author><price>5.95</price></book><book genre="update李赞红" ISBN="2-3631-4"><title>CS从入门到精通</title><author>亚胜</author><price>58.3</price></book></bookstore>3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;foreach(XmlNode xn in xnl){XmlElement xe=(XmlElement)xn;if(xe.GetAttribute("genre")=="fantasy"){xe.RemoveAttribute("genre");//删除genre属性}else if(xe.GetAttribute("genre")=="update李赞红"){xe.RemoveAll();//删除该节点的全部内容}}xmlDoc.Save("bookstore.xml");//===========================================最后结果为:<?xml version="1.0" encoding="gb2312"?><bookstore><book ISBN="2-3631-4"><title>Oberon's Legacy</title><author>Corets, Eva</author><price>5.95</price></book><book></book></bookstore>4、显示所有数据。
XmlNode xn=xmlDoc.SelectSingleNode("bookstore");XmlNodeList xnl=xn.ChildNodes;foreach(XmlNode xnf in xnl){XmlElement xe=(XmlElement)xnf;Console.WriteLine(xe.GetAttribute("genre"));//显示属性值Console.WriteLine(xe.GetAttribute("ISBN"));XmlNodeList xnf1=xe.ChildNodes;foreach(XmlNode xn2 in xnf1){Console.WriteLine(xn2.InnerText);//显示子节点点文本}}1.已知有一个xml文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312"?><bookstore><book genre="fantasy" ISBN="2-3631-4"><title>Oberon's Legacy</title><author>Corets, Eva</author><PRice>5.95</price></book></bookstore>1、往<bookstore>节点中插入一个<book>节点:XmlDocument xmlDoc=new XmlDocument();xmlDoc.Load("bookstore.xml");XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore> XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点xe1.SetAttribute("genre","李赞红");//设置该节点genre属性xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性XmlElement xesub1=xmlDoc.CreateElement("title");xesub1.InnerText="CS从入门到精通";//设置文本节点xe1.AppendChild(xesub1);//添加到<book>节点中XmlElement xesub2=xmlDoc.CreateElement("author");xesub2.InnerText="候捷";xe1.AppendChild(xesub2);XmlElement xesub3=xmlDoc.CreateElement("price");xesub3.InnerText="58.3";xe1.AppendChild(xesub3);root.AppendChild(xe1);//添加到<bookstore>节点中xmlDoc.Save("bookstore.xml");//================结果为:<?xml version="1.0" encoding="gb2312"?><bookstore><book genre="fantasy" ISBN="2-3631-4"><title>Oberon's Legacy</title><author>Corets, Eva</author><price>5.95</price></book><book genre="李赞红" ISBN="2-3631-4"><title>CS从入门到精通</title><author>候捷</author><price>58.3</price></book></bookstore>2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。