xml帮助类
自己今天刚刚写的一个xml的帮助类,有了它以后操作xml应该就会减轻一点负担吧。还没写好,不过写记下来。以后用到再补充吧,暂时够用了先。

/// <summary>
/// xml帮助类
/// </summary>
public class XmlHelper
{
#region 增
/// <summary>
/// 新建一个带有根节点的xml
/// </summary>
/// <param name="rootName">根节点名字</param>
/// <returns></returns>
public static XmlDocument CreateXml(string rootName)
{
XmlDocument xml = new XmlDocument();
//写入声明
XmlNode node = xml.CreateNode(XmlNodeType.XmlDeclaration, "", "");
xml.AppendChild(node);
//增加根节点
XmlElement rootElement = xml.CreateElement(rootName);
xml.AppendChild(rootElement);
return xml;
}
/// <summary>
/// 添加一个父节点到根节点末尾
/// </summary>
/// <param name="xml">xml文档</param>
/// <param name="parentNodeName">父节点名字</param>
/// <returns></returns>
public static void AddParentNode(XmlDocument xml, string parentNodeName)
{
XmlElement parentElement = xml.CreateElement(parentNodeName);
xml.DocumentElement.AppendChild(parentElement);
}
/// <summary>
/// 添加一个新的子节点(包括属性信息)到指定的节点中
/// </summary>
/// <param name="xml">xml文档</param>
/// <param name="currentPath">新节点的父节点xPath路径</param>
/// <param name="elementName">新节点的名字</param>
/// <param name="attrib">新节点的属性名字</param>
/// <param name="attribContent">新节点的属性值</param>
/// <param name="content">新节点值</param>
/// <returns></returns>
public static bool AddElement(XmlDocument xml, string currentNodePath, string elementName
, string attrib, string attribContent, string content)
{
bool flag = false;
XmlNode currentNode = xml.SelectSingleNode(currentNodePath);
if (currentNode != null)
{
XmlElement newElement = xml.CreateElement(elementName);
newElement.SetAttribute(attrib, attribContent);
newElement.InnerText = content;
currentNode.AppendChild(newElement);
flag = true;
}
return flag;
}
/// <summary>
/// 添加一个新的子节点(不包括属性信息)到指定的节点中
/// </summary>
/// <param name="xml">xml文档</param>
/// <param name="currentNodePath">新节点的父节点xPath路径</param>
/// <param name="elementName">新节点名字</param>
/// <param name="content">新节点值</param>
/// <returns></returns>
public static bool AddElement(XmlDocument xml, string currentNodePath, string elementName
, string content)
{
bool flag = false;
XmlNode currentNode = xml.SelectSingleNode(currentNodePath);
if (currentNode != null)
{
XmlElement newElement = xml.CreateElement(elementName);
newElement.InnerText = content;
currentNode.AppendChild(newElement);
flag = true;
}
return flag;
}
/// <summary>
/// 向某一节点添加属性
/// </summary>
/// <param name="xml">xml文档</param>
/// <param name="currentNodePath">属性的节点的xPath</param>
/// <param name="attributeName">属性名</param>
/// <param name="attributeValue">属性值</param>
/// <returns></returns>
public static bool AddAttribute(XmlDocument xml,string currentNodePath,string attributeName
,string attributeValue)
{
bool flag = false;
XmlNode currentNode = xml.SelectSingleNode(currentNodePath);
if (currentNodePath != null)
{
XmlAttribute attribute = xml.CreateAttribute(attributeName); //创建一个新属性
currentNode.Attributes.Append(attribute);
XmlElement currentElement = currentNode as XmlElement;
currentElement.SetAttribute(attributeName, attributeValue);
flag = true;
}
return flag;
}
#endregion
#region 查
/// <summary>
/// 查找指定节点名的节点列表
/// </summary>
/// <param name="xml">xml文档</param>
/// <param name="nodeName">节点名称</param>
/// <returns>符合要求的节点列表</returns>
public static XmlNodeList QueryNodeList(XmlDocument xml, string nodeName)
{
XmlNodeList nodeList = xml.GetElementsByTagName(nodeName);
if (nodeList.Count != 0)
{
return nodeList;
}
return null;
}
/// <summary>
/// 查找指定节点的指定属性值
/// </summary>
/// <param name="xml">xml文档</param>
/// <param name="nodePath">节点的xPath路径,必须是独一无二的。如果有多个则只返回第一个</param>
/// <param name="attributeName">要查询的属性</param>
/// <returns></returns>
public static string QueryAttribute(XmlDocument xml, string nodePath, string attributeName)
{
string res = null;
XmlNode currentNode = xml.SelectSingleNode(nodePath);
if (currentNode != null)
{
XmlAttributeCollection xac = currentNode.Attributes; //当前节点的属性集合
for (int i = 0; i < xac.Count; i++)
{
if (xac[i].Name == attributeName)
{
res = xac[i].Value;
break;
}
}
}
return res;
}
/// <summary>
/// 查找指定节点的值
/// </summary>
/// <param name="xml">xml文档</param>
/// <param name="nodepath">节点的xPath路径,必须是独一无二的。如果有多个则只返回第一个</param>
/// <returns></returns>
public static string QueryNode(XmlDocument xml, string nodepath)
{
string res = null;
XmlNode currentNode = xml.SelectSingleNode(nodepath);
if (currentNode != null)
{
res = currentNode.InnerText;
}
return res;
}
#endregion
#region 存
public static void Save(XmlDocument xml, string path)
{
xml.Save(path);
}
#endregion
#region 转
/// <summary>
/// 将xml转换为dataset
/// </summary>
/// <param name="xml"></param>
/// <returns></returns>
public static DataSet XmlToDataset(XmlDocument xml)
{
DataSet dataSet = new DataSet();
//TODO: dataset
return dataSet;
}
#endregion
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器