2017-07-14 2 views
0

Ich möchte in der Lage sein, das folgende Format mit C# Linq zu Xml ausgeben.Einfache C# Linq zu Xml

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

Betrachten Sie die folgende Funktion. Ich möchte jeden der Parameter auswerten, aber nur diejenigen hinzufügen, die keine leeren Zeichenfolgen sind.

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

Vielen Dank! \ M/\ m/

+1

Stackoverflow nicht Code schreiben Dienstleistungen bietet. Wenn Sie eine Frage haben, zögern Sie nicht. Sie sind herzlich willkommen. – vendettamit

+0

Ich glaube nicht, dass LINQ wirklich für diese Aufgabe geeignet ist, da Sie eine Reihe unabhängiger Parameter haben. Warum nicht einfach ein 'if' verwenden, um das Element zusammenzufügen? – litelite

+3

Wenn Sie Linq verwenden möchten, verwenden Sie 'XElement' anstelle von' XmlElement'. – juharr

Antwort

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; 
    } 

Die Umstellung auf XmlElement von here entlehnt:

+0

Ich wusste, wie ich die Aufgabe mit anderen Mitteln erledigen konnte, aber ich wollte Linq zu Xml auschecken. Vielen Dank! – 80sRocker

+1

Ich würde die Signatur in 'CreateGenresXml (params string [] args)' ändern, so können Sie es so nennen 'CreateGenresXml (" arg1 "," arg2 ", ...)' – GreatAndPowerfulOz