从 Linq C# 获取子节点值

问题描述 投票:0回答:1

尝试获取 XML 中某些子元素的值,但是,在检索这些元素的值时,它们被拼接在一起。

此外,有时文件可以有 1 个参考编号,但也可以有多个。

以下代码

public class Test
{
    public static void ParseXml(string xml)
    {
        var doc = XDocument.Parse(xml);
        List<KeyValuePair<string, string>> caseList = new List<KeyValuePair<string, string>>();
        var t = 1; 
        foreach (var el in doc.Descendants("ReferenceNumbers"))
        {
            //Console.WriteLine(el.ToString());
            caseList.Insert(0, new KeyValuePair<string, string>(t.ToString(), el.Value));
            t++;
        }

        for (int x = 0; x < caseList.Count; x++)
        {
            Console.WriteLine(caseList[x]);
        }
    }
    
    public static void Main()
    {
        
        
        
        ParseXml(@"<root>
<ReferenceNumbers>
        <Reference1>CN534786</Reference1>
        <Reference2>CN476587</Reference2>
   </ReferenceNumbers>
</root>");
    }
}

结果是

[1, CN534786CN476587]

不过,我还是期待着 [1、CN534786] [2、CN476587]

小提琴

c# linq
1个回答
0
投票

使用

doc.Descendants(string).Elements()
代替:

foreach (var el in doc.Descendants("ReferenceNumbers").Elements())
{
    caseList.Insert(0, new KeyValuePair<string, string>(t.ToString(), el.Value));
    t++;
}

产生

[2, CN476587]
[1, CN534786]
© www.soinside.com 2019 - 2024. All rights reserved.