【问题标题】:LINQ to XML Select Nodes based on child node and attributeLINQ to XML 根据子节点和属性选择节点
【发布时间】:2013-07-16 13:39:05
【问题描述】:

我刚刚转移到 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>

【问题讨论】:

    标签: xml linq linq-to-xml


    【解决方案1】:
    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']");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多