Tout d'abord, voici mon code.Création XML avec C#
IEnumerable<XElement> targetDirectory =
from XElement e in workingXmlDocument.Descendants(wixNS + "Directory")
where e.Attribute("Id").Value == "TARGETDIR"
select e;
foreach (var now in targetDirectory)
{
now.Add(XElement.Parse("<Directory Id='" + fileVariable.Directory.Name
+ @"' />"));
}
Voici ce que j'essaie de faire. J'essaye de rechercher chaque élément d'annuaire avec l'attribut Id évalué à TARGETDIR. Ensuite, je place un nouvel élément de répertoire à l'intérieur de celui-ci avec le nom du répertoire d'un fichier. C'est juste cela. Le problème est qu'il place simplement tous les répertoires dans une seule ligne (pas de saut de ligne, pas de retrait, rien, seulement les données brutes), et il inclut une balise xmlns vide avec chaque élément. Comment puis-je lui dire que chaque élément doit avoir sa propre ligne dans le document XML et comment puis-je lui dire d'utiliser le même espace de noms que le reste du document? Je sais que je pourrais juste dire explicitement qu'il devrait avoir un attribut xmlns avec la bonne NS, mais c'est la dernière chose que je veux faire. des idées?
Mise à jour - le code du XML Writer
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineHandling = NewLineHandling.Entitize;
using (XmlWriter currentWriter = XmlWriter.Create(filePath, settings))
{
workingXmlDocument.WriteTo(currentWriter);
currentWriter.Flush();
} // using (XmlWriter xw = XmlWriter.Create(FilePath))
De là, il n'ajoute de nouvelles lignes aux éléments inclus à partir du code ci-dessus.
(J'ai reformaté pour préciser que la boucle foreach ne fait pas partie de la requête.) –
@Jon Skeet - merci pour cela – Adkins
Pourquoi est-ce la dernière chose que vous voulez faire? C'est un peu comme le XML fonctionne. –