我正在尝试使用 C# 和 LINQ XML 读取 XML 文件中的属性,但无法检索深度嵌套在树中的值。我试图获得的价值是<Value>
near的内容<DisplayName>Add Your Comments</DisplayName>
。每个人都<OrderProduct id=???>
可能有自己的评论。
我可以使用 LINQ 读取 XML 文件中的其他属性,但我很困惑如何去读取如此深入嵌套的内容。
谢谢。
<?xml version="1.0" encoding="utf-16"?>
<OrderXml>
<Order>
<OrderProducts>
<OrderProduct id="1">
.
.
.
</OrderProduct>
<OrderProduct id="2">
<PropertyValues>
<PropertyValue>
<Property id="10786">
<DisplayName>Base</DisplayName>
</Property>
<Value />
</PropertyValue>
<PropertyValue>
<Property id="10846">
<DisplayName>Add Your Comments</DisplayName>
</Property>
<Value>this is a comment</Value>
</PropertyValue>
</PropertyValues>
</OrderProduct>
</OrderProducts>
</Order>
</OrderXml>
这是我到目前为止的代码。我可以检索“添加您的评论”部分,但我被困在如何获取它后面的部分。
string productOrderID = "";
string productName = "";
XElement xelement;
xelement = XElement.Load (@"D:\Order.xml");
IEnumerable<XElement> Products = xelement.Descendants ("OrderProduct");
foreach (var order in Products)
{
productOrderID = order.Attribute ("id").Value;
productName = order.Element ("Product").Element ("Name").Value;
Console.WriteLine ("productOrderID: {0}", productOrderID);
Console.WriteLine ("productName: {0}", productName);
Console.WriteLine ("");
IEnumerable<XElement> PropertyValues = xelement.Descendants ("PropertyValues").Elements ("PropertyValue");
foreach (var propValue in PropertyValues.Elements ("Property").Elements ("DisplayName"))
{
Console.WriteLine ("Property ID: {0}", propValue.Value);
if (propValue.Value == "Add Your Comments")
{
Console.WriteLine ("---");
}
}
}