1

我只是转移到 LINQ,所以仍然会遇到某些情况。

在下面的 XML 中,我需要根据 RoomCodes 属性值选择正确的 Persist 节点,并根据我们选择的内容从 Item/@attributes 中获取其他值。因此,如果我需要第二个,我将通过 @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>
4

1 回答 1

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']");
于 2013-07-16T13:41:35.693 回答