Прежде всего, это мой код.Создание XML с 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
+ @"' />"));
}
Вот что я пытаюсь сделать. Я пытаюсь найти каждый элемент Directory с атрибутом Id, оцененным в TARGETDIR. Затем я помещаю новый элемент каталога внутри него с именем каталога файла. Он делает именно это. Проблема в том, что он просто помещает все каталоги в одну строку (без разрыва строки, без отступа, ничего, только с необработанными данными), и включает в себя пустой тег xmlns с каждым элементом. Как я могу сказать, что каждый элемент должен иметь собственную строку в документе XML и как я могу сказать, что он использует то же пространство имен, что и остальная часть документа? Я знаю, что могу просто сказать, что он должен иметь атрибут xmlns с правильным NS, но это последнее, что я хочу сделать. идеи?
Update - код для 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))
отсюда не добавляя новые строки к прилагаемому элементов из приведенного выше кода.
(Я переформатировал, чтобы было ясно, что цикл foreach не является частью запроса.) –
@Jon Skeet - спасибо за это – Adkins
Почему это последнее, что вы хотите сделать? Это как работает XML. –