C# 获取XML中所有节点值
考虑写一些操作XML的公共方法生成dll,以备以后经常使用,今天先实现了获取XML中所有节点值。
参考资料: shmiloy001的博客 : http://blog.csdn.net/shmiloy001/article/details/6637686
稍作修改,可以作为dll引用,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
namespace XmlOperation
{
/// <summary>
/// 获取指定路径下XML的所有节点值
/// </summary>
public class Getxml
{
public List<string> getxml(string xmlFilePath, List<string> list)
{
try
{
XmlDocument doc = new XmlDocument();
if (File.Exists(xmlFilePath))
{
doc.Load(xmlFilePath);
XmlNodeList xnl = doc.DocumentElement.ChildNodes;
GetAllNodes(xnl, list);
}
else
{
list.Add("Error:");
list.Add("Please make sure the path and file are correct!!");
}
return list;
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// 递归遍历所有节点
/// </summary>
/// <param name="nodelist"></param>
/// <param name="listnode"></param>
/// <returns></returns>
public List<string> GetAllNodes(XmlNodeList nodelist, List<string> listnode)
{
foreach (XmlElement element in nodelist)
{
//如果这个节点没有出现过,则添加到list列表
if (!listnode.Contains(element.Name))
{
listnode.Add(element.Name);
}
if (element.ChildNodes[0] is XmlText)
{
continue;
}
else
{
GetAllNodes(element.ChildNodes, listnode);
}
}
return listnode;
}
}
}