根据XML文件父节点的属性值取得所有子节点


 1 <?xml version="1.0"?>
 2 <root>
 3   <Nodes name="操作类型">
 4     <node value="1">增加</node>
 5     <node value="2">删除</node>
 6     <node value="3">修改</node>
 7     <node value="4">启用</node>
 8     <node value="5">停用</node>
 9   </Nodes>
10 
11   <Nodes name="代码分类类型">
12     <node value="1">系统类</node>
13     <node value="2">表计类</node>
14   </Nodes>  
15 </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

文件的相关知识。

 1 public static List<object[]> GetListData(string nodename)
 2{
 3      string filePath = System.Web.HttpContext.Current.Server.MapPath("~/xml/ListData.config");
 4      List<object[]> results= new List<object[]>(0x20);
 5 
 6      XElement xdoc = XElement.Load(filePath);
 7      var fatherQuery = from fatherNode in xdoc.Descendants("Nodes")
 8                               where fatherNode.Attribute("name").Value.Equals(nodename)
 9                               select fatherNode;
10 
11      var sonQuery = from childNode in fatherQuery.Descendants("node")
12                            select new
13                            {
14                                key = childNode.Attribute("value").Value,
15                                value = childNode.Value
16                            };
17 
18       /*上面的查询分成了两段,实际可用下面一句话代替
19       var sonQuery = from childNode in xdoc.Descendants("Nodes").Where(r => r.Attribute("name").Value.Equals(nodename)).Descendants("node")
20                            select new
21                              {
22                                  key = childNode.Attribute("value").Value,
23                                  value = childNode.Value
24                              };*/
25          
26       foreach (var s in sonQuery)
27       {
28           results.Add(new object[] { s.key, s.value });
29       }
30                        
31       return results;
32} 

LINQ To XML学习地址:http://msdn.microsoft.com/zh-cn/library/bb387012(v=vs.90).aspx

优质内容筛选与推荐>>
1、Python2和Python3的区别(未完待续。。。。)
2、棋盘覆盖 状压DP+矩阵快速幂
3、字符串、文件操作,英文词频统计预处理
4、pm2使用
5、第十四周作业


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn