C#操作xml增删改查.docx

上传人:b****5 文档编号:4399117 上传时间:2022-12-01 格式:DOCX 页数:14 大小:17.93KB
下载 相关 举报
C#操作xml增删改查.docx_第1页
第1页 / 共14页
C#操作xml增删改查.docx_第2页
第2页 / 共14页
C#操作xml增删改查.docx_第3页
第3页 / 共14页
C#操作xml增删改查.docx_第4页
第4页 / 共14页
C#操作xml增删改查.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C#操作xml增删改查.docx

《C#操作xml增删改查.docx》由会员分享,可在线阅读,更多相关《C#操作xml增删改查.docx(14页珍藏版)》请在冰豆网上搜索。

C#操作xml增删改查.docx

C#操作xml增删改查

c#操作xml

同样是增,删,改,查四种操作。

现在我们就详细介绍一下增和删两种操作。

看下面的一个xml示例:

xmlversion="1.0"encoding="utf-8"?

>

456

5465

jjjjj

3456789

xml的每个节点分为节点名称,节点值和属性三类,如:

member节点:

id为其一个属性,menber为其节点名称。

再如:

name节点456为其节点值。

如果我们需要增加一个节点可以调用一下几个方法:

///

///在根节点下添加父节点

///

publicstaticvoidAddParentNode(stringxmlPath,stringparentNode)

{

XmlDocumentxdoc=newXmlDocument();

xdoc.Load(xmlPath);

//创建一个新的menber节点并将它添加到根节点下

XmlElementNode=xdoc.CreateElement(parentNode);

xdoc.DocumentElement.PrependChild(Node);

xdoc.Save(xmlPath);

}

#region插入一节点,带一属性

///

///插入一节点,带一属性

///

///Xml文档路径

///当前节点路径

///新节点

///属性名称

///属性值

///新节点值

publicstaticvoidXmlInsertElement(stringxmlPath,stringMainNode,stringElement,stringAttrib,stringAttribContent,stringContent)

{

XmlDocumentobjXmlDoc=newXmlDocument();

objXmlDoc.Load(xmlPath);

XmlNodeobjNode=objXmlDoc.SelectSingleNode(MainNode);

XmlElementobjElement=objXmlDoc.CreateElement(Element);

objElement.SetAttribute(Attrib,AttribContent);

objElement.InnerText=Content;

objNode.AppendChild(objElement);

objXmlDoc.Save(xmlPath);

}

#endregion

#region插入一节点不带属性

publicstaticvoidXmlInsertElement(stringxmlPath,stringMainNode,stringElement,stringContent)

{

XmlDocumentobjXmlDoc=newXmlDocument();

objXmlDoc.Load(xmlPath);

XmlNodeobjNode=objXmlDoc.SelectSingleNode(MainNode);

XmlElementobjElement=objXmlDoc.CreateElement(Element);

objElement.InnerText=Content;

objNode.AppendChild(objElement);

objXmlDoc.Save(xmlPath);

}

#endregion

#region向一个节点添加属性

///

///向一个节点添加属性

///

///xml文件路径

///节点路径

///要添加的节点属性的名称

///要添加属性的值

publicstaticvoidAddAttribute(stringxmlPath,stringNodePath,stringNodeAttribute1,stringNodeAttributeText)

{

XmlDocumentobjXmlDoc=newXmlDocument();

objXmlDoc.Load(xmlPath);

XmlAttributenodeAttribute=objXmlDoc.CreateAttribute(NodeAttribute1);

XmlNodenodePath=objXmlDoc.SelectSingleNode(NodePath);

nodePath.Attributes.Append(nodeAttribute);

XmlElementxe=(XmlElement)nodePath;

xe.SetAttribute(NodeAttribute1,NodeAttributeText);

objXmlDoc.Save(xmlPath);

}

#endregion

如想要加入一个member的父节点,属性id值为7你可以这样来做:

//取得xml文件的路径

stringxmlPath=Server.MapPath("~/test.xml");

stringparentNode="member";

//在根节点下添加父节点member

XmlHelper.AddParentNode(xmlPath,parentNode);

//刚添加的member节点添加一

XmlHelper.AddAttribute(xmlPath,"phonebook/member","id","7");

则xml文件就会变成这样

xmlversion="1.0"encoding="utf-8"?

>

456

5465

jjjjj

3456789

向新添加的节点member(id=7)的节点下加入节点名称为qq,值为123456的新节点,你可以这样做

XmlHelper.XmlInsertElement(xmlPath,"//member[@id="7"]","qq","123456");

则输出的xml为:

xmlversion="1.0"encoding="utf-8"?

>

456

5465

jjjjj

3456789

123456

增加节点我们就介绍到这里,只要你基本掌握了xpath语法,融会贯通,就可以利用上面几个公用方法对xml文件进行增加操作

下面我们介绍一下删除操作,删除共有两种,一是删除某一节点,一种是删除某一节点的属性。

可以使用的方法如下:

///

///删除XML节点和此节点下的子节点

///

///xml文档路径

///节点路径

publicstaticvoidXmlNodeDelete(stringxmlPath,stringNode)

{

XmlDocumentobjXmlDoc=newXmlDocument();

objXmlDoc.Load(xmlPath);

stringmainNode=Node.Substring(0,Node.LastIndexOf("/"));

objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));

objXmlDoc.Save(xmlPath);

}

#region删除一个节点的属性

///

///删除一个节点的属性

///

///文件路径

///节点路径(xpath)

///属性名称

publicstaticvoidxmlnNodeAttributeDel(stringxmlPath,stringNodePath,stringNodeAttribute)

{

XmlDocumentobjXmlDoc=newXmlDocument();

objXmlDoc.Load(xmlPath);

XmlNodenodePath=objXmlDoc.SelectSingleNode(NodePath);

XmlElementxe=(XmlElement)nodePath;

xe.RemoveAttribute(NodeAttribute);

objXmlDoc.Save(xmlPath);

}

#endregion

如要删除属性id值为5的节点(包括其子节点),我们可以这样做:

stringxmlPath=Server.MapPath("~/test.xml");

XmlHelper.XmlNodeDelete(xmlPath,"phonebook/member[@id="5"]");

这时xml文件将变为:

xmlversion="1.0"encoding="utf-8"?

>

456

5465

jjjjj

3456789

123456

假如我们向id=6的父节点下子节点qq节点加一属性sex值为‘男‘,从上面可以看出这是可以可以做到的,则xml文件就变为:

xmlversion="1.0"encoding="utf-8"?

>

456

5465

jjjjj

3456789

123456

假如我们要删除sex=“男”,我们可以这样做:

XmlHelper.xmlnNodeAttributeDel(xmlPath,"//member[qq='5465']/qq",'sex');

//也可以

XmlHelper.xmlnNodeAttributeDel(xmlPath,"//member[@id='6']/qq",'sex');

如何更改和读取xml特定节点。

我们依然以上次的xml文件为例:

xmlversion="1.0"encoding="utf-8"?

>

456

5465

jjjjj

3456789

首先是更改操作,它也包含两个方面即更改指定节点的值和指定节点的某一属性值,我们可以使用的方法如下:

///

///更新Xml节点内容

///

///xml路径

///要更换内容的节点:

节点路径根节点/父节点/当前节点

///新的内容

publicstaticvoidXmlNodeReplace(stringxmlPath,stringNode,stringContent)

{

XmlDocumentobjXmlDoc=newXmlDocument();

objXmlDoc.Load(xmlPath);

objXmlDoc.SelectSingleNode(Node).InnerText=Content;

objXmlDoc.Save(xmlPath);

}

///

///更改节点的属性值

///

///文件路径

///节点路径

///要更改的节点属性的名称

///更改的属性值

publicstaticvoidXmlAttributeEide(stringxmlPath,stringNodePath,stringNodeAttribute1,stringNodeAttributeText)

{

XmlDocumentobjXmlDoc=newXmlDocument();

objXmlDoc.Load(xmlPath);

XmlNodenodePath=objXmlDoc.SelectSingleNode(NodePath);

XmlElementxe=(XmlElement)nodePath;

xe.SetAttribute(NodeAttribute1,NodeAttributeText);

objXmlDoc.Save(xmlPath);

}

第一个方面,加入我们要更改menber(id=6)下节点name的值我们可以这样做:

stringxmlPath=Server.MapPath("~/test.xml");

XmlHelper.XmlNodeReplace(xmlPath,"//member[@id=6]/name","hya");

也可以

stringxmlPath=Server.MapPath("~/test.xml");

XmlHelper.XmlNodeReplace(xmlPath,"//member[qq='5465']/name","hya");

总之你能够用xpath语法找到所要更改的节点即可。

更改属性值也一样,在这不在赘述!

查询正如对数据库操作查询考查你对sql的熟练程度一样,对xml的查询也就是考查你对xpath了解多少。

在这里我只是列出几个有限的调用方法,相信从上面的介绍中你可以大致对xpath有了一定的了解:

#region读取XML到DataSet

///

///功能:

读取XML到DataSet中

///

///xml路径

///DataSet

publicstaticDataSetGetXml(stringXmlPath)

{

DataSetds=newDataSet();

ds.ReadXml(@XmlPath);

returnds;

}

#endregion

#region读取xml文档并返回一个节点

///

///读取xml文档并返回一个节点:

适用于一级节点

///

///xml路径

///节点

///

publicstaticstringReadXmlReturnNode(stringXmlPath,stringNode)

{

XmlDocumentdocXml=newXmlDocument();

docXml.Load(@XmlPath);

XmlNodeListxn=docXml.GetElementsByTagName(Node);

returnxn.Item(0).InnerText.ToString();

}

#endregion

#region查找数据,返回一个DataSet

///

///查找数据,返回当前节点的所有下级节点,填充到一个DataSet中

///

///xml文档路径

///节点的路径:

根节点/父节点/当前节点

///

publicstaticDataSetGetXmlData(stringxmlPath,stringXmlPathNode)

{

XmlDocumentobjXmlDoc=newXmlDocument();

objXmlDoc.Load(xmlPath);

DataSetds=newDataSet();

StringReaderread=newStringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);

ds.ReadXml(read);

returnds;

}

#region读取指定节点的指定属性值

///

///功能:

///读取指定节点的指定属性值

///

///节点路径

///此节点的属性

///

publicstringGetXmlNodeAttribute(stringxmlPath,stringstrNode,stringstrAttribute)

{

stringstrReturn="";

xmlDoc.Load(xmlPath);

try

{

//根据指定路径获取节点

XmlNodexmlNode=xmlDoc.SelectSingleNode(strNode);

//获取节点的属性,并循环取出需要的属性值

XmlAttributeCollectionxmlAttr=xmlNode.Attributes;

for(inti=0;i

{

if(xmlAttr.Item(i).Name==strAttribute)

strReturn=xmlAttr.Item(i).Value;

}

}

catch(XmlExceptionxmle)

{

throwxmle;

}

returnstrReturn;

}

#endregion

#region 读取指定节点的值

///

///功能:

///读取指定节点的值

///

///节点名称(xpath)

///

publicstringGetXmlNodeValue(stringxmlPath,stringstrNode)

{

stringstrReturn=String.Empty;

xmlDoc.Load(xmlPath);

try

{

//根据路径获取节点

XmlNodexmlNode=xmlDoc.SelectSingleNode(strNode);

strReturn=xmlNode.InnerT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1