【问题标题】:How to Get a specific Value of an XML Node from XDocument如何从 XDocument 获取 XML 节点的特定值
【发布时间】:2013-01-24 21:52:29
【问题描述】:

我问的问题与这篇文章中的问题基本相同:How to Get XML Node from XDocument,除了尝试在一行代码中一次性返回 CData 值。我正在尝试使以下函数中的返回正常工作:

private string RetrieveFormattedString(string controlId)
{
    return template.Descendants("Template")
      .Where(templateNode => templateNode.Value == controlId)
      .Where(tmp => tmp.Name == "Format").Select(y => y.Value).ToString();
}

我在下面有以下 XML:

<?xml version="1.0" encoding="utf-8" ?>
  <Templates>
    <Template>
      <Name>NodeName1</Name>
        <Parameter Type="TextBox" Name="conferenceID">{__otcConferenceID__}</Parameter>
        <Parameter Type="TextBox" Name="conferenceCode">{__otcConferenceCode__}</Parameter>
        <Format>
          <![CDATA[ <b>NodeName1</b><br /> <table><tr><td>iPhone</td><td>{__otcConferenceID__},#,{__otcConferenceCode__}</td></tr></table>]]>
        </Format>
     </Template>
     <Template>
        <Name>NodeName2</Name>
        <Parameter Type="TextBox" Name="conferenceID">{__otcConferenceID__}</Parameter>
        <Parameter Type="TextBox" Name="conferenceCode">{__otcConferenceCode__}</Parameter>
        <Format>
            <![CDATA[ <b>NodeName2</b><br /> <table><tr><td>iPhone</td><td>{__otcConferenceID__},#,{__otcConferenceCode__}</td></tr></table>]]>
        </Format>
    </Template>
</Templates>

我知道我做错了,并希望得到更多的关注。

【问题讨论】:

  • templateNode.Value == controlId 应该测试什么? &lt;Name&gt; 标签?
  • @Bobson templateNode.Value 将等于 NodeName1 或 NodeName2。

标签: c# .net linq linq-to-xml


【解决方案1】:
private string RetrieveFormattedString(XDocument xDoc, string nodeName)
{
    return xDoc.Descendants("Template")
                .First(t => t.Element("Name").Value == nodeName)
                .Element("Format").Value;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多