【问题标题】:How to add the custom attributes value from xml element in c# using linq?c# - 如何使用linq从c#中的xml元素添加自定义属性值?
【发布时间】:2013-03-13 06:50:57
【问题描述】:

您好,我有一个 xml 文档

<task>
<directory path="C:\Backup\"/>
<days value="2" />
</task>

我想在 c# 中使用 linq 获取目录的路径和天值,我该如何实现呢?

The output should be 
C:\Backup\ and 2

到目前为止,我已经尝试过类似下面的 xdocument 是我的 xml 文件的路径,它工作正常

              var directory = xdocument.Descendants("task")
                              .Elements("directory")
                              .Attributes("path");

但这部分不起作用。任何帮助将不胜感激。

【问题讨论】:

    标签: c# .net visual-studio-2010 linq linq-to-xml


    【解决方案1】:

    你可以试试这个:

    var directory = xdoc.DescendantsAndSelf("task") 
                      .Select(c => new 
                      {
                        Path = c.Elements("directory").Attributes("path").First().Value,
                        Day = c.Elements("days").Attributes("value").First().Value,
                      });
    

    或者如果你想要一个字符串:

    var directory = xdoc.DescendantsAndSelf("task") 
                      .Select(c => new 
                      {
                        Complete = c.Elements("directory").Attributes("path").First().Value +
                        c.Elements("days").Attributes("value").First().Value
                      });
    

    编辑 你可以像这样遍历它们:

    foreach(var item in directory)
    {
       Console.WriteLine(item.Path+ " + item.Day);
    }
    

    【讨论】:

    • 谢谢,但它不起作用我在想如果它起作用我会把它们分成单独的字符串。
    • @nzdev 最上面的例子就是这样做的
    • @nzdev 我已经编辑了我的答案,包括如何使用directory
    • 将此using System.Xml.Linq 添加到您的班级
    • 我已经得到了这个我不知道为什么它不承认这很奇怪,谢谢你的回答
    【解决方案2】:

    检查这个,因为 Descendants()Elements() 返回 IEnumerable 结果

    var directory = xdocument.Descendants("task").First().
                                  .Elements("directory").First().
                                  .Attribute("path").Value;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 2016-07-16
      • 1970-01-01
      相关资源
      最近更新 更多