我有个问题。

仍在从事一个项目,但我陷于困境。

我们有以下代码:

    var copyitems = doc.Descendants(application)   // Read all descendants
        .SelectMany(x => x.Elements("Test"))
        .Select(s =>
        {
            var splits = s.Value.Split(new string[] { "@SRCDIR@", "@INSTDIR@" }, StringSplitOptions.RemoveEmptyEntries); // split the string to separate source and destination.
            return new { Source = splits[0].Replace(",", ""), Destination = splits[1].Replace(",", "") };
        })
        .ToList();


结合以下xml示例:

<root>
<Test>
    <Copy>@SRCDIR@\test1 ,@INSTDIR@\test1</Copy>
</Test>
<root>


但是xml现在变为:

<root>
<Test>
   <Copy>
        <Source>@SRCDIR@\test</Source>
        <Destination>@INSTDIR@\test1</Destination>
   </Copy>
</Test>
<root>


我现在该怎么做,但除了进行拆分外,只需阅读源和目标的信息即可。

另外,您可以有多个副本后代,也可以有其他名称的后代,它们没有源值和目标值

最佳答案

寻找Element方法,该方法接受元素名称作为输入。

var copyitems = doc.Descendants(application)   // Read all descendants
    .SelectMany(x => x.Elements("Test"))
    .Select(s =>
    {
        return new
               {
                     Source = s.Element("Source").Value.Replace("@SRCDIR@", ""),
                     Destination =s.Element("Destination").Value.Replace("@INSTDIR@", "")
               };
    })
    .ToList();

关于c# - C#Linq获得后代的值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37805054/

10-09 05:54