2013-01-24 84 views
0

我在本質上提出了與此帖子中發現的相同的問題:How to Get XML Node from XDocument,但試圖在碼。我試圖獲得在下面的函數的返回正常工作:如何從XDocument獲取XML節點的特定值

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> 

我知道我錯誤地這樣做,並希望能得到更多的眼睛。

+0

什麼是'templateNode.Value == controlId'應該測試? ''標籤? – Bobson

+0

@Bobson templateNode.Value將等於NodeName1或NodeName2。 – Magnum

回答

4
private string RetrieveFormattedString(XDocument xDoc, string nodeName) 
{ 
    return xDoc.Descendants("Template") 
       .First(t => t.Element("Name").Value == nodeName) 
       .Element("Format").Value; 
}