2015-03-31 106 views
1

我無法檢索XML節點註釋。有沒有不同的方式來檢索它? 。價值也沒有工作。我在StackOverflow中找不到任何東西。 這是我在做什麼:無法讀取使用LINQ to XML的XML註釋

<?xml version="1.0" encoding="utf-8"?> 
<components> 
    <component name="AAA"> 
     <sample> 
      <!-- blah blah blah --> 
     </sample> 
     <data> 
      <!-- blah blah blah -->    
     </data> 
    </component> 

    <component name="BBB"> 
     <sample> 
      <!-- blah blah blah --> 
     </sample> 
     <data> 
      <!-- blah blah blah -->    
     </data>  
    </component>  
</components> 

public class Component 
{ 
    public string Name { get; set; } 
    public string Sample { get; set; } 
    public string Data { get; set; } 
} 

    XDocument doc = XDocument.Load(xmlFileName); 

    Component components = doc.Descendants("component") 
     .Select(x => new Component 
     { 
      Name = (string)x.Attribute("name"), 
      Sample = (string)x.Element("sample"), //cannot read value 
      Data = (string)x.Element("data") //cannot read value 
     }); 

任何想法?

+0

提示:評論不是元素 – 2015-03-31 23:26:11

回答

1

我發現在這個環節的解決方案:https://msdn.microsoft.com/en-us/library/bb675167.aspx 因此,代碼最終看上去像這樣:

var components = doc 
     .Descendants("component") 
     .Select(x => new Component() 
     { 
      Name = (string)x.Attribute("name"), 
      Sample = x.Element("sample").Nodes().OfType<XComment>() 
                   .Select(s=>s.Value) 
                   .Aggregate(
                    new StringBuilder(), 
                    (s,i)=>s.Append(i), 
                    s => s.ToString() 
                   ), 
      Data = x.Element("data").Nodes().OfType<XComment>() 
                   .Select(s=>s.Value) 
                   .Aggregate(
                    new StringBuilder(), 
                    (s,i)=>s.Append(i), 
                    s => s.ToString() 
                   ) 
     }); 
3

試試這個:

var components = 
    doc 
     .Descendants("component") 
     .Select(x => new Component() 
     { 
      Name = (string)x.Attribute("name"), 
      Sample = String.Join("", x.Element("sample").Nodes().OfType<XComment>()), 
      Data = String.Join("", x.Element("data").Nodes().OfType<XComment>()), 
     }); 
+0

現在我越來越:錯誤參數2:無法從'System.Collections.Generic.IEnumerable '轉換爲'string []' – Max 2015-04-01 14:05:44

+0

您可能沒有需要的參考或您正在使用g之前的框架 - 它爲我工作,因爲它是。 – Enigmativity 2015-04-01 14:14:05

+0

是的我使用.net 3.5對不起:-) – Max 2015-04-01 16:40:33