我正在尝试迭代PcsInItem下的每个元素并获取每个元素的价格并将它们插入 SQL 表中。下面是我的 XML 结构。
<Message>
<Body>
<Item Id="8683297523">
<PcsInItem>
<Pcs Price="20" PcsId="12829"></Pcs>
<Pcs Price="50" PcsId="64838"></Pcs>
<Pcs Price="80" PcsId="43829"></Pcs>
</PcsInItem>
</Item>
</Body>
</Message>
当我运行代码时,它只会将第一项插入 SQL。我不明白为什么它也没有迭代其他项目而只获得第一个项目。
这是我的代码:
var xdoc = XDocument.Parse(soapResult);
var y = xdoc.Descendants("Body").Descendants("PcsInItem");
var a = xdoc.Descendants("Body");
XElement b = a.Elements("Item").Last();
var ItemId = b.Attributes("Id").FirstOrDefault().Value;
SqlConnection conn;
string constring = @"...";
string query = "INSERT INTO..";
using (conn = new SqlConnection(constring))
{
foreach (XElement x in y)
{
var Price = x.Element("Pcs").Attribute("Price")?.Value;
var PcsId = x.Element("Pcs").Attribute("PcsId")?.Value;
using (var cmd = new SqlCommand(query, conn))
{
try
{
conn.Open();
cmd.Parameters.AddWithValue("@Price", Price);
cmd.Parameters.AddWithValue("@PcsId", PcsId);
cmd.Parameters.AddWithValue("@ItemId", ItemId);
komut2.ExecuteNonQuery();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
}
知道为什么我只在我的 SQL 表中获得第一项吗?应该有 3 个不同的表记录,并且所有这三个记录具有相同的 ItemId 但不同的 Price 和 PcsId。