我刚刚转到LINQ,所以仍然遇到某些情况。
在以下XML中,我需要根据RoomCodes属性值选择正确的Persist节点,并根据我们选择的内容获取Item / @属性中的其他值。因此,如果我需要第二个,我会选择@RoomCodes =“257 | 1”,并且还需要来自该Persist节点的货币等。
全部谢谢
哈根达斯
<Root>
<Persist>
<Item SequenceNum="Wy4FDfktUFj"/>
<Item RatePlanCode="Qgcu8UofK+ARXUwDD6NGf"/>
<Item RoomCodes="232|4"/>
<Item AmountAfterTax="1442.00"/>
<Item CurrencyCode="USD"/>
</Persist>
<Persist>
<Item SequenceNum="Wy4FDfktUFj"/>
<Item RatePlanCode="Unk28iUoIjundujak+9094j3"/>
<Item RoomCodes="257|1"/>
<Item AmountAfterTax="552.00"/>
<Item CurrencyCode="USD"/>
</Persist>
</Root>
答案 0 :(得分:2)
string value = "232|4";
var xdoc = XDocument.Load(path_to_xml);
var persist =
xdoc.Root.Elements("Persist")
.FirstOrDefault(p =>
p.Elements().Any(i => (string)i.Attribute("RoomCodes") == value));
或者使用LINQ to XML的XPath扩展:
var persist = xdoc.XPathSelectElement("//Persist[Item/@RoomCodes='257|1']");