c# xml操作(二)  此博文包含图片    (-- ::)转载▼
标签: 杂谈 分类: c#
上次,我们介绍了增加和删除xml的一些操作,这次我们将介绍如何更改和读取xml特定节点。我们依然以上次的xml文件为例:
<?xml version="1.0" encoding="utf-8"?>
<phonebook>
<member id="">
<name></name>
<qq></qq>
</member>
<member id="">
<name>jjjjj</name>
<qq></qq>
</member>
</phonebook> 首先是更改操作,它也包含两个方面即更改指定节点的值和指定节点的某一属性值,我们可以使用的方法如下:
/// <summary>
/// 更新Xml节点内容
/// </summary>
/// <param name="xmlPath">xml路径</param>
/// <param name="Node">要更换内容的节点:节点路径 根节点/父节点/当前节点</param>
/// <param name="Content">新的内容</param>
public static void XmlNodeReplace(string xmlPath, string Node, string Content)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
objXmlDoc.SelectSingleNode(Node).InnerText = Content;
objXmlDoc.Save(xmlPath); } /// <summary>
/// 更改节点的属性值
/// </summary>
/// <param name="xmlPath">文件路径</param>
/// <param name="NodePath">节点路径</param>
/// <param name="NodeAttribute1">要更改的节点属性的名称</param>
/// <param name="NodeAttributeText">更改的属性值</param>
public static void XmlAttributeEide(string xmlPath, string NodePath, string NodeAttribute1, string NodeAttributeText)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
XmlNode nodePath = objXmlDoc.SelectSingleNode(NodePath);
XmlElement xe = (XmlElement)nodePath;
xe.SetAttribute(NodeAttribute1, NodeAttributeText);
objXmlDoc.Save(xmlPath); } 第一个方面,加入我们要更改menber(id=)下节点name的值我们可以这样做:
string xmlPath = Server.MapPath("~/test.xml"); XmlHelper.XmlNodeReplace(xmlPath, "//member[@id=6]/name" ,"hya");
也可以
string xmlPath = Server.MapPath("~/test.xml"); XmlHelper.XmlNodeReplace(xmlPath, "//member[qq='5465']/name" ,"hya");
总之你能够用xpath语法找到所要更改的节点即可。
更改属性值也一样,在这不在赘述!
查询正如对数据库操作查询考查你对sql的熟练程度一样,对xml的查询也就是考查你对xpath了解多少。在这里我只是列出几个有限的调用方法,相信从上面的介绍中你可以大致对xpath有了一定的了解: #region 读取XML到DataSet
/// <summary>
/// 功能:读取XML到DataSet中
/// </summary>
/// <param name="XmlPath">xml路径</param>
/// <returns>DataSet</returns>
public static DataSet GetXml(string XmlPath)
{
DataSet ds = new DataSet();
ds.ReadXml(@XmlPath);
return ds;
}
#endregion #region 读取xml文档并返回一个节点
/// <summary>
/// 读取xml文档并返回一个节点:适用于一级节点
/// </summary>
/// <param name="XmlPath">xml路径</param>
/// <param name="NodeName">节点</param>
/// <returns></returns>
public static string ReadXmlReturnNode(string XmlPath, string Node)
{
XmlDocument docXml = new XmlDocument();
docXml.Load(@XmlPath);
XmlNodeList xn = docXml.getElementsByTagName_r(Node);
return xn.Item().InnerText.ToString();
}
#endregion #region 查找数据,返回一个DataSet
/// <summary>
/// 查找数据,返回当前节点的所有下级节点,填充到一个DataSet中
/// </summary>
/// <param name="xmlPath">xml文档路径</param>
/// <param name="XmlPathNode">节点的路径:根节点/父节点/当前节点</param>
/// <returns></returns>
public static DataSet GetXmlData(string xmlPath, string XmlPathNode)
{
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
DataSet ds = new DataSet();
StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read);
return ds;
}
#region 读取指定节点的指定属性值
/// <summary>
/// 功能:
/// 读取指定节点的指定属性值
/// </summary>
/// <param name="strNode">节点路径</param>
/// <param name="strAttribute">此节点的属性</param>
/// <returns></returns>
public string GetXmlNodeAttribute(string xmlPath, string strNode, string strAttribute)
{
string strReturn = "";
xmlDoc.Load(xmlPath);
try
{
//根据指定路径获取节点
XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
//获取节点的属性,并循环取出需要的属性值
XmlAttributeCollection xmlAttr = xmlNode.Attributes; for (int i = ; i < xmlAttr.Count; i++)
{
if (xmlAttr.Item(i).Name == strAttribute)
strReturn = xmlAttr.Item(i).Value;
}
}
catch (XmlException xmle)
{
throw xmle;
}
return strReturn;
}
#endregion #region 读取指定节点的值
/// <summary>
/// 功能:
/// 读取指定节点的值
/// </summary>
/// <param name="strNode">节点名称(xpath)</param>
/// <returns></returns>
public string GetXmlNodeValue(string xmlPath,string strNode)
{
string strReturn = String.Empty;
xmlDoc.Load(xmlPath);
try
{
//根据路径获取节点
XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
strReturn = xmlNode.InnerText;
}
catch (XmlException xmle)
{
System.Console.WriteLine(xmle.Message);
}
return strReturn;
}
#endregion #region 根据节点属性读取子节点值(较省资源模式)
/// <summary>
/// 根据节点属性读取子节点值(较省资源模式)
/// </summary>
/// <param name="XmlPath">xml路径</param>
/// <param name="FatherElement">父节点值</param>
/// <param name="AttributeName">属性名称</param>
/// <param name="AttributeValue">属性值</param>
/// <param name="ArrayLength">返回的数组长度</param>
/// <returns></returns>
public static System.Collections.ArrayList GetSubElementByAttribute(string XmlPath, string FatherElement, string AttributeName, string AttributeValue, int ArrayLength)
{
System.Collections.ArrayList al = new System.Collections.ArrayList();
XmlDocument docXml = new XmlDocument();
docXml.Load(@XmlPath);
XmlNodeList xn;
xn = docXml.DocumentElement.SelectNodes("//" + FatherElement + "[" + @AttributeName + "='" + AttributeValue + "']");
XmlNodeList xx = xn.Item().ChildNodes;
for (int i = ; i < ArrayLength & i < xx.Count; i++)
{ al.Add(xx.Item(i).InnerText);
}
return al; }
#endregion

c# xml操作(二)的更多相关文章

  1. T-Sql(五)xml操作

    t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...

  2. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

  3. .net学习笔记---xml操作及读写

    一.XML文件操作中与.Net中对应的类 微软的.NET框架在System.xml命名空间提供了一系列的类用于Dom的实现. 以下给出XML文档的组成部分对应.NET中的类: XML文档组成部分 对应 ...

  4. php xml 操作。

    参考 文章:http://www.cnblogs.com/zcy_soft/archive/2011/01/26/1945482.html DOMDocument相关的内容. 属性: Attribut ...

  5. xml操作

    一.LINQ to XML 编程基础 1.LINQ to XML类 System.Xml.Linq命名空间含有19个类,下表列出了它们的名称及其描述: 类 描述 XAttribute 表示一个 XML ...

  6. 转:TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码

    TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码 http://blog.csdn.net/candle806/article/details/7490599 以 ...

  7. .Net XML操作 <第二篇>

    一.XML文件操作中与.Net中对应的类 微软的.NET框架在System.xml命名空间提供了一系列的类用于Dom的实现. 以下给出XML文档的组成部分对应.NET中的类: XML文档组成部分 对应 ...

  8. c# xml操作类 比较齐全

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  9. ASP.NET控件GridView的使用& Xml操作注意事项

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢!   原文链接:http://www.cnblogs.com/zishi/p/6729478.html 文章主要内容 ...

随机推荐

  1. hibernate链接数据库链接池c3p0配置

    [html] view plain copy <bean id="dataSourceLocal" name="dataSource" class=&qu ...

  2. How tomcat works 读书笔记十二 StandardContext 上

    在tomcat4中,StandardContext.java是最大的一个类,有117k.废话不说,开始分析吧. 其实要分析StandardContext,也就主要分析两个方法,一个start,一个in ...

  3. 大数据批量导入,解决办法,实践从定时从 sqlserver 批量同步数据到 mySql

    c#代码,批量导入数据代码 public class MySql_Target : ZFCommon.DataAccesser.Base.DABase { public MySql_Target() ...

  4. JavaScript继承详解

    面向对象与基于对象 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例. 类定义了一类事物公共的行为和方法:而实例则是类的一个具体实现. 我们还知道,面向对象编程有三个重要的概念 - 封装.继 ...

  5. NIO 多线程

    本文可看成是对Doug Lea Scalable IO in Java一文的翻译. 当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作.他们都有一个共同的 ...

  6. 【转】火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法

    关于 GCJ-02 和 BD-09 ,请参考 http://developer.baidu.com/map/question.htm#qa0043 . 算法代码如下,其中 bd_encrypt 将 G ...

  7. 前端Mahsup异步依赖方式不能做业务数据依赖

    很久之前流行mashup方式做内容集成,之前为了IP定位的方便,引用了第三方的IP定位JS,然后根据其内容与服务器同步地址数据并写入Cookie,可是这种方式一旦,第三方的库反应缓慢时,就会出现大问题 ...

  8. 选择Web框架的20条标准

    原文观点由Matt Raible提出,关于Matt Rabile的介绍:http://www.infoq.com/cn/author/Matt-Raible 内容摘自<Java程序员修炼之道&g ...

  9. 【转】UNREFERENCED_PARAMETER的作用

    UNREFERENCED_PARAMETER 的作用我们从 UNREFERENCED_PARAMETER 开始吧.这个宏在 winnt.h 中定义如下: #define UNREFERENCED_PA ...

  10. stm8开发环境

    网上大致有两种环境: 1.stvp+stvd 也就是st自家的sttoolsetpack包 stvd的界面有点古板,有点像vc++6.0,具体使用感觉怎样我也不知道,我没有使用这个环境. stvp这个 ...