【问题标题】:LINQ TO XML retrieving Child Element ValueLINQ TO XML 检索子元素值
【发布时间】:2015-08-05 18:59:44
【问题描述】:

我有以下 XML

<ABC xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ns.hr-xml.org/2007-04-15">
    <ReceiptId>
        <IdValue>123</IdValue>
    </ReceiptId>
    <ClientOrderId>
        <IdValue>345</IdValue>
    </ClientOrderId>
    <AccessPoint>
        <Description>My Description</Description>
    </AccessPoint>
    <ABCStatus>
        <Status>Error</Status>
        <Details>ERRORS:
 Talent is already in an active process for this opening.
        </Details>
        <StatusDate>2015-08-05</StatusDate>
    </ABCStatus>
</ABC>

我正在尝试检索嵌套在 IdValue 和 ClientOrderId 中的元素值 345

我在 C# 中使用 Linq to xml 代码来检索值,但没有运气

XDocument XMLResults = XDocument.Parse(sResult);

var sClientOrderID =
        from nodeAElem in XMLResults.Root.Elements("ABC")
        from nodeA1Elem in nodeAElem.Elements("ClientOrderId")
        from nodeA11Elem in nodeA1Elem.Elements("IdValue")
        select nodeA11Elem.Value;

还需要检索上述xml的错误状态元素值。

非常感谢任何帮助

【问题讨论】:

  • 您的 XML 文档正在使用命名空间,您必须在查询中使用它才能使其正常工作。

标签: c# xml linq


【解决方案1】:
  1. 您的 XML 文档正在使用命名空间,您必须在查询中使用它才能使其正常工作。
  2. Root 已经将您带到 ABC 元素,因此您不必调用 Elements("ABC")
  3. 您正在寻找单个值,因此您可能希望使用 Element 而不是 Elements
var ns = (XNamespace)"http://ns.hr-xml.org/2007-04-15";
var sClientOrderID = (int)XMLResults.Root
                                    .Element(ns + "ClientOrderId")
                                    .Element(ns + "IdValue");

【讨论】:

  • 谢谢你,Marcin 你完美地清除了我所有的错误......非常感谢你的反馈
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多