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

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

我在xml以下;

                <Main>
                    <Item ItemID="123456">
                        <Devtm PL="SP"></Devtm>
                        <Devtm PL="RV"></Devtm>
                    </Item>
                </Main>

我正在尝试获取所有属于Devtm元素的值。该元素可以具有带有PL属性的多个值。

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);
                    }
                }
            }

这只是给我第一个元素值“ SP”。我也如何获得第二个值?我不需要循环,因为我知道那里只有2个值。

Linq出于某些原因也不可选项。如何使用XDocument实现它?有什么想法吗?

c# xml-parsing
1个回答
0
投票
您应该稍微重写一下代码以获得预期的结果

var lineItemDetails = xdoc.Root?.DescendantsAndSelf("Item"); foreach (XElement lineItemDetail in lineItemDetails.Nodes()) { var Devtm = lineItemDetail?.Attribute("PL")?.Value; Console.WriteLine(Devtm); }

它打印SPRV
© www.soinside.com 2019 - 2024. All rights reserved.