Форматирование XML с табулированием и удаление конечного пространства элемента? - PullRequest
1 голос
/ 16 ноября 2010

Я пытаюсь сделать 2 вещи:

  1. Получить выходной XML, форматированный с TABULATION вместо пробелов.

  2. Удалить конечный пробелон генерирует для видеоэлемента.

    " />
    

    до

    "/>
    

Я пытался использовать

xmlWriter.Formatting = Formatting.Indented;

, а также

IndentChar

но у меня они не сработали, не знаю почему.

Это код, который у меня есть на данный момент, я также хотел бы услышать советы и предложения по его улучшению:

XmlDocument xmlDoc = new XmlDocument();

XmlTextWriter xmlWriter = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8' standalone='yes'");
xmlWriter.WriteComment(@" This file was made by @author");
xmlWriter.WriteStartElement("videos");
xmlWriter.Close();

xmlDoc.Load(filename);
XmlNode root = xmlDoc.DocumentElement;
foreach (int myID in ExportListIDs)
{
    XmlElement video = xmlDoc.CreateElement("video");
    root.AppendChild(video);
    video.SetAttribute("videoID", myID.ToString());
}

xmlDoc.Save(filename);

1 Ответ

1 голос
/ 16 ноября 2010

Мне удалось решить вопрос 1 с помощью приведенного ниже кода, но я все еще не знаю, возможно ли удалить пробел между " и /> в конце элемента с вопросом 2.

        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Encoding = Encoding.UTF8;
        settings.Indent = true;
        settings.IndentChars = "\t";

        XmlWriter writeXML = XmlWriter.Create("test.xml", settings);
        writeXML.WriteStartDocument();
        writeXML.WriteComment(@" This file was made by @author");

        writeXML.WriteStartElement("videos");

        foreach (var item in myList)
        {
            writeXML.WriteStartElement("video");
            writeXML.WriteAttributeString("ID", item.Key.ToString());
            writeXML.WriteAttributeString("Name", item.Value);
                writeXML.WriteStartElement("object");
                writeXML.WriteAttributeString("A", item.Key.ToString());
                writeXML.WriteAttributeString("B", item.Value);
                writeXML.WriteEndElement();
            writeXML.WriteEndElement();
        }

        writeXML.WriteEndElement();
        writeXML.WriteEndDocument();
        writeXML.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...