首页 > 解决方案 > 如何获取父节点子节点的子节点值

问题描述

我知道这个问题看起来很混乱,因为它对我来说很混乱。我认为最好我举个例子。我有一个部分 xml 文件,如下所示。我需要获取节点的VALUE子节点的值,DIALVALUE但是要获取正确的值,我需要通过id 属性找到正确的DIALVALUE节点。DIALDIALVALUE节点在 xml 文件中列出了 71 次,并且所需的值不按顺序排列。如何做到这一点?

<?xml version="1.0" encoding="utf-16"?>
<OrderXml>
    <DialValues>
      <DialValue>
        <Dial id="11144" externalId="">
          <PlanName>pg1_CreditUnionName</PlanName>
          <DisplayName>Credit Union Name:</DisplayName>
        </Dial>
        <Value>Alexis Nab Credit Union</Value>
      </DialValue>
      <DialValue>
        <Dial id="11145" externalId="">
          <PlanName>pg1_CharterNumber</PlanName>
          <DisplayName>Charter Number:</DisplayName>
        </Dial>
        <Value>9999</Value>
      </DialValue>
      <DialValue>
        <Dial id="11146" externalId="">
          <PlanName>pg1_ContactNameFirst</PlanName>
          <DisplayName>Solution Main Contact First Name:</DisplayName>
        </Dial>
        <Value>Alexis</Value>
      </DialValue>
      <DialValue>
    </DialValues>
<OrderXml>

标签: c#.netxmllinq-to-xml

解决方案


这应该给你的想法(注意:包括空处理等)。

var value = XDocument.Parse(xml)
                .Descendants("Dial")
                .Single(el => el.Attribute("id").Value == "11145")
                .Parent
                .Descendants("Value")
                .Single().Value;

推荐阅读