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);
}
希望对您有所帮助。
我有以下 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);
}
希望对您有所帮助。