根据XML文件父节点的属性值取得所有子节点
2013-05-31 09:57
204 查看
<?xml version="1.0"?> <root> <Nodes name="操作类型"> <node value="1">增加</node> <node value="2">删除</node> <node value="3">修改</node> <node value="4">启用</node> <node value="5">停用</node> </Nodes> <Nodes name="代码分类类型"> <node value="1">系统类</node> <node value="2">表计类</node> </Nodes> </root>
项目中现在要写一个方法,给定一个参数nodeName,即Nodes节点的name属性,将Nodes节点的所有
node节点获取,并将每一个node的value属性和值保存在一个object[]中,然后将每一个object数组添加到
List中,所以最终方法的返回值是List<object[]>。
object[0] object[1] 1 增加 2 删除 3 修改 4 启用 5 停用
方法中最关键的是如何根据父节点的Nodes的name属性值来获取所有子节点,涉及到用LINQ来操作XML
文件的相关知识。
public static List<object[]> GetListData(string nodename) { string filePath = System.Web.HttpContext.Current.Server.MapPath("~/xml/ListData.config"); List<object[]> results= new List<object[]>(0x20); XElement xdoc = XElement.Load(filePath); var fatherQuery = from fatherNode in xdoc.Descendants("Nodes") where fatherNode.Attribute("name").Value.Equals(nodename) select fatherNode; var sonQuery = from childNode in fatherQuery.Descendants("node") select new { key = childNode.Attribute("value").Value, value = childNode.Value }; /*上面的查询分成了两段,实际可用下面一句话代替 var sonQuery = from childNode in xdoc.Descendants("Nodes").Where(r => r.Attribute("name").Value.Equals(nodename)).Descendants("node") select new { key = childNode.Attribute("value").Value, value = childNode.Value };*/ foreach (var s in sonQuery) { results.Add(new object[] { s.key, s.value }); } return results; }
LINQ To XML学习地址:http://msdn.microsoft.com/zh-cn/library/bb387012(v=vs.90).aspx
相关文章推荐
- Xml 根据路径和属性值获取节点
- C#读取XML(全部或根据某个节点的属性值)
- C# xml 根据属性值直接得到目标节点
- Linq to XML 根据属性值遍历子节点
- XmlDocument根据节点的属性值获取节点
- 用 AJAX 读取xml 节点属性值
- [ActionScript 3.0] 根据xml属性查找相应xml节点,递归函数。
- [转]获取xml节点值和属性值(兼容ie和firefox)
- 如何获取xml任意节点中某个属性值
- 利用dom4j学习xml(三) 修改子节点的属性值
- 在XML中增加节点 . 在原有的XML文件中,根据节点,添加数据
- js 解析XML 在Edge浏览器下面 无法准确读到节点属性值
- 取xml任意节点中某个属性值的方法
- Xml 搜索innerText或者某属性值为特定值的节点
- 获取xml里最后一个节点的属性值
- XML SelectSingleNode的使用 根据节点属性获取该节点
- C# winform 在xml文件中根据指定节点名查找节点名以及值
- C#之XML基础 为一个节点添加两个属性值
- [C#]已知某个XML节点的某个属性值,直接定位该节点
- 获取和设置 Web.config 或 XML 中的各个节点项和属性值