C# 解析多个元素

C# parsing multiple elements

我有以下 xml 结构。

<Bd>
<Det AccNo="380619034" Zip="344000"></Det>
<Det AccNo="380619022" Zip="345000"></Det>
</Bd>

已知 <Bd> 标签下总是有 2 个元素。

我可以使用以下代码检索第一个元素;

string soapResult = rd.ReadToEnd();
var xdoc = XDocument.Parse(soapResult);
var y = xdoc.Descendants("Bd");


foreach (var x in y) {

var AccNo = x.Element("Bd")?.Element("Det")?.Attribute("AccNo")?.Value;

}

但是这段代码只给了我第一个元素。我也想获得第二个元素,但做不到。我错过了什么?

可以不用循环使用Linq,如下面的代码:

XDocument xDocument = XDocument.Parse(soapResult);
IEnumerable<string> accNoList = xDocument.Descendants("Bd")
    .Descendants()
    .Select(x => x.Attribute("AccNo").Value);

演示

Console.WriteLine(string.Join(", ", accNoList));

结果

"380619034, 380619022"

对于您的代码,您可以将其更改为:

var xdoc = XDocument.Parse(soapResult);
var y = xdoc.Descendants("Bd")
    .Descendants();

foreach (var x in y)
{
    var AccNo = x.Attribute("AccNo")?.Value;
    Console.WriteLine(AccNo);
}

希望对您有所帮助。