Utiliser des littéraux XML en C #?

Est-il possible d’append des données XML littérales dans un fichier de code C #? J’utilise actuellement un littéral multiligne mais cela devient compliqué, comme vous pouvez le voir. Une meilleure façon de faire ça?

ssortingng XML = @"    "; 

Les littéraux XML sont une fonctionnalité de VB.NET, pas C #.

Ce que vous avez posté est aussi proche que possible de C #.

Vous voudrez peut-être envisager de remplacer les guillemets doubles incorporés par des guillemets simples (car les deux types sont des XML valides).

Pour les grandes quantités de XML, vous pouvez envisager la réponse de Marc – en utilisant un fichier XML (chargé une fois et stocké en mémoire), afin de pouvoir tirer parti de l’éditeur XML.

Si le code XML est suffisamment volumineux pour vous gêner, envisagez plutôt d’utiliser un fichier .xml plat, chargé à partir du disque ou incorporé en tant que ressource. Tant que vous ne le chargez qu’une fois (peut-être dans un constructeur statique), cela ne fera aucune différence en termes de performances. Il sera considérablement plus facile à gérer car il utilisera l’éditeur de fichier XML de l’EDI. Et cela ne gênera pas votre code.

En référence à mon commentaire, je ne pouvais pas me rappeler où j’avais vu cela, mais j’ai finalement trouvé le lien XmlBuilder .

Rétrospectivement, il semble que Linq to XML serait votre meilleur choix. C’est plus propre, plus rapide et plus facile à gérer que la concaténation de chaînes XML:

 XNamespace ns = "http://schemas.example.com/customui"; XDocument doc = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XElement(ns + "customUI", new XElement(ns + "taskbar", new XAtsortingbute("id", "save")) ) ); var ssortingngWriter = new SsortingngWriter(); doc.Save(ssortingngWriter); //Write to SsortingngWriter, preserving the declaration () var xmlSsortingng = ssortingngWriter.ToSsortingng(); //Save as ssortingng doc.Save(@"d:\out.xml"); //Save to file 

En tant que solution particulière, et très spécifique à chaque cas, si vous travaillez dans un environnement ASP.NET avec le moteur Razor, dans un fichier CSHTML, vous pouvez:

 Func xml = @ @(item.PropertyA) @(item.PropertyB) @(item.PropertyC) ; 

Avec l’ajout d’une méthode d’extension:

 public static XDocument ToXDocument(this Func source, T item) { return XDocument.Parse(source(item).ToHtmlSsortingng()); } 

Vous pouvez alors:

 XDocument document = xml.ToXDocument(new MyType() { PropertyA = "foo", PropertyB = "bar", PropertyC = "qux", }); 

Encore une fois, particulier? Oui Spécifique au cas? Oui Mais cela fonctionne et donne un grand Intellisense. ( attention, cela donnera aussi un tas d’avertissements de validité, selon la version de validation du document )

Le plus proche que nous puissions avoir en C # serait via LINQ, quelque chose comme ça:

 var xml = XDocument.Load( new SsortingngReader(@" The Da Vinci Code The Lost Symbol ")); var query = from book in xml.Elements("Books").Elements("Book") where book.Atsortingbute("author").Value == "Dan Brown" select book.Value; foreach (var item in query) Console.WriteLine(item);