现在能读出来 但是无法对单个节点进行修改不知道错在哪里
c#代码如下, using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Xml;
namespace CXianFeng.Tools
{
/// <summary>
/// XmlOp类提供对XML数据库的读写
/// </summary>
public class OperatXML
{
//声明一个XmlDocument空对象
protected XmlDocument XmlDoc = new XmlDocument(); /// <summary>
/// 构造函数,导入Xml文件
/// </summary>
/// <param name="xmlFile">文件虚拟路径 </param>
public OperatXML(string xmlFile)
{
try
{
XmlDoc.Load(GetXmlFilePath(xmlFile)); //载入Xml文档
}
catch (System.Exception ex)
{
throw ex;
}
}
/// <summary>
/// 析构函数
/// </summary>
OperatXML()
{
XmlDoc = null; //释放XmlDocument对象
}
/// <summary>
/// 保存文件
/// </summary>
/// <param name="filePath">文件虚拟路径 </param>
public void Save(string filePath)
{
try
{
XmlDoc.Save(GetXmlFilePath(filePath));
}
catch (System.Exception ex)
{
throw ex;
}
}
/// <summary>
/// 返回Xml文件实际路径
/// </summary>
/// <param name="xmlFile">文件虚拟路径 </param>
/// <returns> </returns>
public string GetXmlFilePath(string xmlFile)
{
return HttpContext.Current.Server.MapPath(xmlFile);
}
/// <summary>
/// 根据Xml文件的节点路径,返回一个DataSet数据集
/// </summary>
/// <param name="XmlPathNode">Xml文件的某个节点 </param>
/// <returns> </returns>
public DataSet GetDs(string XmlPathNode)
{
DataSet ds = new DataSet();
try
{
System.IO.StringReader read = new System.IO.StringReader(XmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read); //利用DataSet的ReadXml方法读取StringReader文件流
read.Close();
}
catch
{ }
return ds;
}
/// <summary>
/// 属性查询,返回属性值
/// </summary>
/// <param name="XmlPathNode">属性所在的节点 </param>
/// <param name="Attrib">属性 </param>
/// <returns> </returns>
public string SelectAttrib(string XmlPathNode, string Attrib)
{
string _strNode = "";
try
{
_strNode = XmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value;
}
catch
{ }
return _strNode;
}
/// <summary>
/// 节点查询,返回节点值
/// </summary>
/// <param name="XmlPathNode">节点的路径 </param>
/// <returns> </returns>
public string SelectNodeText(string XmlPathNode)
{
string _nodeTxt = XmlDoc.SelectSingleNode(XmlPathNode).InnerText;
if (_nodeTxt == null || _nodeTxt == "")
return "";
else
return _nodeTxt;
}
/// <summary>
/// 节点值查询判断
/// </summary>
/// <param name="XmlPathNode">父节点 </param>
/// <param name="index">节点索引 </param>
/// <param name="NodeText">节点值 </param>
/// <returns>布尔</returns>
public bool SelectNode(string XmlPathNode, int index, string NodeText)
{
try
{
XmlNodeList _NodeList = XmlDoc.SelectNodes(XmlPathNode);
//循环遍历节点,查询是否存在该节点
for (int i = 0; i < _NodeList.Count; i++)
{
if (_NodeList[i].ChildNodes[index].InnerText == NodeText)
{
return true;
}
}
}
catch
{
}
return false;
}
/// <summary>
/// 获取子节点个数
/// </summary>
/// <param name="XmlPathNode">父节点 </param>
/// <returns> </returns>
public int NodeCount(string XmlPathNode)
{
int i = 0;
try
{
i = XmlDoc.SelectSingleNode(XmlPathNode).ChildNodes.Count;
}
catch
{
i = 0;
}
return i;
}
/// <summary>
/// 更新一个节点的内容
/// </summary>
/// <param name="XmlPathNode">节点的路径 </param>
/// <param name="Content">新的节点值 </param>
/// <returns>布尔</returns>
/// XPath表达式,
/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
/// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
/// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
public bool UpdateNode(string XmlPathNode, string NodeContent)
{
try
{
XmlDoc.SelectSingleNode(XmlPathNode).InnerText = NodeContent;
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 更新N个节点值
/// </summary>
/// <param name="XmlParentNode">父节点 </param>
/// <param name="XmlNode">子节点 </param>
/// <param name="NodeContent">子节点内容 </param>
/// <returns> </returns>
public bool UpdateNode(string XmlParentNode, string[] XmlNode, string[] NodeContent)
{
try
{
//根据节点数组循环修改节点值
for (int i = 0; i < XmlNode.Length; i++)
{
XmlDoc.SelectSingleNode(XmlParentNode + "/" + XmlNode[i]).InnerText = NodeContent[i];
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 修改属性
/// </summary>
/// <param name="XmlPathNode">属性所在的节点 </param>
/// <param name="Attrib">属性名 </param>
/// <param name="Content">属性值 </param>
/// <returns> </returns>
public bool UpdateAttrib(string XmlPathNode, string Attrib, string AttribContent)
{
try
{
//修改属性值
XmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value = AttribContent;
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 添加属性
/// </summary>
/// <param name="MainNode">属性所在节点 </param>
/// <param name="Attrib">属性名 </param>
/// <param name="AttribContent">属性值 </param>
/// <returns> </returns>
public bool InsertAttrib(string MainNode, string Attrib, string AttribContent)
{
try
{
XmlElement objNode = (XmlElement)XmlDoc.SelectSingleNode(MainNode); //强制转化成XmlElement对象
objNode.SetAttribute(Attrib, AttribContent); //XmlElement对象添加属性方法
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 插入一个节点,带N个子节点
/// </summary>
/// <param name="MainNode">插入节点的父节点 </param>
/// <param name="ChildNode">插入节点的元素名 </param>
/// <param name="Element">插入节点的子节点名数组 </param>
/// <param name="Content">插入节点的子节点内容数组 </param>
/// <returns> </returns>
public bool InsertNode(string MainNode, string ChildNode, string[] Element, string[] Content)
{
try
{
XmlNode objRootNode = XmlDoc.SelectSingleNode(MainNode); //声明XmlNode对象
XmlElement objChildNode = XmlDoc.CreateElement(ChildNode); //创建XmlElement对象
objRootNode.AppendChild(objChildNode);
for (int i = 0; i < Element.Length; i++) //循环插入节点元素
{
XmlElement objElement = XmlDoc.CreateElement(Element[i]);
objElement.InnerText = Content[i];
objChildNode.AppendChild(objElement);
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 删除一个节点
/// </summary>
/// <param name="Node">要删除的节点 </param>
/// <returns> </returns>
public bool DeleteNode(string Node)
{
try
{
//XmlNode的RemoveChild方法来删除节点及其所有子节点
XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node));
return true;
}
catch
{
return false;
}
}
}
}
使用代码 OperatXML oxInfo = new OperatXML("/xml/siteinfo.xml");//网站基本信息
oxInfo.UpdateNode(@"siteconfig/siteinfo/sitename", textSiteName);
c#代码如下, using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Xml;
namespace CXianFeng.Tools
{
/// <summary>
/// XmlOp类提供对XML数据库的读写
/// </summary>
public class OperatXML
{
//声明一个XmlDocument空对象
protected XmlDocument XmlDoc = new XmlDocument(); /// <summary>
/// 构造函数,导入Xml文件
/// </summary>
/// <param name="xmlFile">文件虚拟路径 </param>
public OperatXML(string xmlFile)
{
try
{
XmlDoc.Load(GetXmlFilePath(xmlFile)); //载入Xml文档
}
catch (System.Exception ex)
{
throw ex;
}
}
/// <summary>
/// 析构函数
/// </summary>
OperatXML()
{
XmlDoc = null; //释放XmlDocument对象
}
/// <summary>
/// 保存文件
/// </summary>
/// <param name="filePath">文件虚拟路径 </param>
public void Save(string filePath)
{
try
{
XmlDoc.Save(GetXmlFilePath(filePath));
}
catch (System.Exception ex)
{
throw ex;
}
}
/// <summary>
/// 返回Xml文件实际路径
/// </summary>
/// <param name="xmlFile">文件虚拟路径 </param>
/// <returns> </returns>
public string GetXmlFilePath(string xmlFile)
{
return HttpContext.Current.Server.MapPath(xmlFile);
}
/// <summary>
/// 根据Xml文件的节点路径,返回一个DataSet数据集
/// </summary>
/// <param name="XmlPathNode">Xml文件的某个节点 </param>
/// <returns> </returns>
public DataSet GetDs(string XmlPathNode)
{
DataSet ds = new DataSet();
try
{
System.IO.StringReader read = new System.IO.StringReader(XmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read); //利用DataSet的ReadXml方法读取StringReader文件流
read.Close();
}
catch
{ }
return ds;
}
/// <summary>
/// 属性查询,返回属性值
/// </summary>
/// <param name="XmlPathNode">属性所在的节点 </param>
/// <param name="Attrib">属性 </param>
/// <returns> </returns>
public string SelectAttrib(string XmlPathNode, string Attrib)
{
string _strNode = "";
try
{
_strNode = XmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value;
}
catch
{ }
return _strNode;
}
/// <summary>
/// 节点查询,返回节点值
/// </summary>
/// <param name="XmlPathNode">节点的路径 </param>
/// <returns> </returns>
public string SelectNodeText(string XmlPathNode)
{
string _nodeTxt = XmlDoc.SelectSingleNode(XmlPathNode).InnerText;
if (_nodeTxt == null || _nodeTxt == "")
return "";
else
return _nodeTxt;
}
/// <summary>
/// 节点值查询判断
/// </summary>
/// <param name="XmlPathNode">父节点 </param>
/// <param name="index">节点索引 </param>
/// <param name="NodeText">节点值 </param>
/// <returns>布尔</returns>
public bool SelectNode(string XmlPathNode, int index, string NodeText)
{
try
{
XmlNodeList _NodeList = XmlDoc.SelectNodes(XmlPathNode);
//循环遍历节点,查询是否存在该节点
for (int i = 0; i < _NodeList.Count; i++)
{
if (_NodeList[i].ChildNodes[index].InnerText == NodeText)
{
return true;
}
}
}
catch
{
}
return false;
}
/// <summary>
/// 获取子节点个数
/// </summary>
/// <param name="XmlPathNode">父节点 </param>
/// <returns> </returns>
public int NodeCount(string XmlPathNode)
{
int i = 0;
try
{
i = XmlDoc.SelectSingleNode(XmlPathNode).ChildNodes.Count;
}
catch
{
i = 0;
}
return i;
}
/// <summary>
/// 更新一个节点的内容
/// </summary>
/// <param name="XmlPathNode">节点的路径 </param>
/// <param name="Content">新的节点值 </param>
/// <returns>布尔</returns>
/// XPath表达式,
/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
/// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
/// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
public bool UpdateNode(string XmlPathNode, string NodeContent)
{
try
{
XmlDoc.SelectSingleNode(XmlPathNode).InnerText = NodeContent;
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 更新N个节点值
/// </summary>
/// <param name="XmlParentNode">父节点 </param>
/// <param name="XmlNode">子节点 </param>
/// <param name="NodeContent">子节点内容 </param>
/// <returns> </returns>
public bool UpdateNode(string XmlParentNode, string[] XmlNode, string[] NodeContent)
{
try
{
//根据节点数组循环修改节点值
for (int i = 0; i < XmlNode.Length; i++)
{
XmlDoc.SelectSingleNode(XmlParentNode + "/" + XmlNode[i]).InnerText = NodeContent[i];
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 修改属性
/// </summary>
/// <param name="XmlPathNode">属性所在的节点 </param>
/// <param name="Attrib">属性名 </param>
/// <param name="Content">属性值 </param>
/// <returns> </returns>
public bool UpdateAttrib(string XmlPathNode, string Attrib, string AttribContent)
{
try
{
//修改属性值
XmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value = AttribContent;
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 添加属性
/// </summary>
/// <param name="MainNode">属性所在节点 </param>
/// <param name="Attrib">属性名 </param>
/// <param name="AttribContent">属性值 </param>
/// <returns> </returns>
public bool InsertAttrib(string MainNode, string Attrib, string AttribContent)
{
try
{
XmlElement objNode = (XmlElement)XmlDoc.SelectSingleNode(MainNode); //强制转化成XmlElement对象
objNode.SetAttribute(Attrib, AttribContent); //XmlElement对象添加属性方法
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 插入一个节点,带N个子节点
/// </summary>
/// <param name="MainNode">插入节点的父节点 </param>
/// <param name="ChildNode">插入节点的元素名 </param>
/// <param name="Element">插入节点的子节点名数组 </param>
/// <param name="Content">插入节点的子节点内容数组 </param>
/// <returns> </returns>
public bool InsertNode(string MainNode, string ChildNode, string[] Element, string[] Content)
{
try
{
XmlNode objRootNode = XmlDoc.SelectSingleNode(MainNode); //声明XmlNode对象
XmlElement objChildNode = XmlDoc.CreateElement(ChildNode); //创建XmlElement对象
objRootNode.AppendChild(objChildNode);
for (int i = 0; i < Element.Length; i++) //循环插入节点元素
{
XmlElement objElement = XmlDoc.CreateElement(Element[i]);
objElement.InnerText = Content[i];
objChildNode.AppendChild(objElement);
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 删除一个节点
/// </summary>
/// <param name="Node">要删除的节点 </param>
/// <returns> </returns>
public bool DeleteNode(string Node)
{
try
{
//XmlNode的RemoveChild方法来删除节点及其所有子节点
XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node));
return true;
}
catch
{
return false;
}
}
}
}
使用代码 OperatXML oxInfo = new OperatXML("/xml/siteinfo.xml");//网站基本信息
oxInfo.UpdateNode(@"siteconfig/siteinfo/sitename", textSiteName);
解决方案 »
- sql二次排序问题。
- 动态按钮问题
- 怎样变更gridview单元格里的值,不刷新整个gridview
- 神马情况?开发环境下OK,IIS就有问题
- DataGrid 分页错误
- 高分请教--如何在CS文件里操作动态生成的checkbox?
- 怎样在web项目启动的时候,直接启动两个页面,象csdn那样,弹出两个广告?
- 使用DataSet修改XML问题
- 奇怪!又不让俺访问了!!!
- .net 如何压缩图片并上传
- |zyciis| ASP.NET自带的“从客户端中检测到有潜在危险的 Request.Form 值”他是根据什么标准来确定的,也相当于他判断的正则是怎么写 谢谢
- VB.NET 上传文件后,如何在网页中可以根据不同的文件类型对其进行显示或供下载?
{
try
{
XmlDoc.SelectSingleNode(XmlPathNode).InnerText = NodeContent;
XmlDoc.Save(HttpContext.Current.Server.MapPath("xmlPath"));
return true;
}
catch
{
return false;
}
}
{
try
{
XmlDoc.SelectSingleNode(XmlPathNode).InnerText = NodeContent;
XmlDoc.Save(HttpContext.Current.Server.MapPath("xmlPath"));//错了
XmlDoc.Save(HttpContext.Current.Server.MapPath(xmlPath));
return true;
}
catch
{
return false;
}
}