C# 如何在C语言中解析多个元素属性值#

C# 如何在C语言中解析多个元素属性值#,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我有下面的xml <Main> <Item ItemID="123456"> <Devtm PL="SP"></Devtm> <Devtm PL="RV"></Devtm> </Item> </Main> 这只是给我第一个元素值,即“SP”。我怎样才能得到第二个值呢?我不需要循环,因为我知道那里只有2个值 出于某些原因,LINQ也不是一个选项。如何使用

我有下面的xml

<Main>
    <Item ItemID="123456">
        <Devtm PL="SP"></Devtm>
        <Devtm PL="RV"></Devtm>
    </Item>
</Main>
这只是给我第一个元素值,即“SP”。我怎样才能得到第二个值呢?我不需要循环,因为我知道那里只有2个值


出于某些原因,LINQ也不是一个选项。如何使用XDocument实现它?

您可以稍微重写代码以获得预期的结果。使用方法访问
元素,然后遍历其节点

var lineItemDetails=xdoc.Root?.subjects(“项”);
foreach(类型()的lineItemDetails?.Nodes()中的变量lineItemDetail)
{
var Devtm=lineItemDetail?属性(“PL”)?值;
控制台写入线(Devtm);
}
它打印
SP
RV

如果希望使用基于索引的访问,而不使用循环,这会有所帮助

var lineItemDetails=xdoc.Root?.genderantsandself(“项目”).FirstOrDefault();
var nodes=lineItemDetails?.degenantNodes().OfType().ToList();
Console.WriteLine(节点?[0]?.Attribute(“PL”)?.Value);
Console.WriteLine(节点?[1]?.Attribute(“PL”)?.Value);

是否有办法将其分配给另一个变量,如var Devtm[0]或var Devtm[1]?@sensahin我已使用基于索引的访问更新了代码是否可以将使用索引的访问与foreach循环一起使用?您提供的第一个解决方案?对不起,我不明白为什么/它没有意义,您在使用索引访问特定元素的循环中逐个访问元素
using (WebResponse response = request.GetResponse())
{
    using (StreamReader rd = new StreamReader(response.GetResponseStream()))
    {
        string soapResult = rd.ReadToEnd();
        var xdoc = XDocument.Parse(soapResult);
        var lineItemDetails = xdoc.Descendants("Main");

        foreach (var lineItemDetail in lineItemDetails)
        {
            var Devtm = lineItemDetail.Element("Item")?.Element("Devtm")?.Attribute("PL")?.Value;
            Console.WriteLine(Devtm);
        }
    }
}