1

私は LINQ に移行したばかりなので、まだ特定のシナリオで立ち往生しています。

次の XML では、RoomCodes 属性値に基づいて正しい Persist ノードを選択し、選択内容に基づいて Item/@attributes から他の値を取得する必要があります。したがって、2 番目のものが必要な場合は、@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 に答える