2017-07-14 130 views
0

我希望能夠使用C#Linq到Xml輸出以下格式。簡單的C#Linq到Xml

<Genres> 
<Genre Value="Rock" /> 
<Genre Value="Metal" /> 
</Genres> 

考慮以下功能。我想評估每個參數,但只添加那些不是空字符串的參數。

private XmlElement createGenresXml(string str1 = "", string str2 = "Rock", string str3 = "Metal", string str4 = "") 
{ 
    'Return XmlElement should look like the Xml above. 
} 

謝謝! \ M/\ M/

+1

#1不提供代碼編寫的服務。如果您有任何問題,請隨時留言。不用客氣。 – vendettamit

+0

我不認爲LINQ是真的適合這個任務,因爲你有一堆獨立的參數。爲什麼不使用一些'if'來將元素放在一起? – litelite

+3

如果你想使用Linq,那麼使用'XElement'而不是'XmlElement'。 – juharr

回答

1
public XmlElement CreateGenresXml(string[] args) 
    { 
     var el = new XElement("Genres"); 
     el.Add(args.Where(x => !string.IsNullOrWhiteSpace(x)).Select(arg => new XElement("Genre", new XAttribute("Value", arg)))); 
     var doc = new XmlDocument(); 
     using (var reader = el.CreateReader()) 
     { 
      doc.Load(reader); 
     } 
     return doc.DocumentElement; 
    } 

轉換到XMLELEMENT從here借:

+0

我知道如何通過其他方式完成任務,但想要查看Linq到Xml。謝謝! – 80sRocker

+1

我會將簽名更改爲'CreateGenresXml(params string [] args)'這樣你可以像這樣調用它'CreateGenresXml(「arg1」,「arg2」,...) – GreatAndPowerfulOz