Несколько вопросов о XmlTextWriter - PullRequest
3 голосов
/ 27 июня 2011

Я новичок в редактировании XML, и у меня есть несколько вопросов к проблемам, с которыми я сталкиваюсь.

Первое: как добавить новые строки после каждого writer.WriteEndElement();.Я нашел примеры с использованием writer.WriteWhitespace("\n");, но, похоже, он не создает никаких новых строк.

Второе: я думаю, что это может ничего не делать из-за предыдущей проблемы, но я хотел сделать отступ в своем коде, используя это вконец: writer.Formatting = Formatting.Indented;, но, похоже, он ничего не делает (скорее всего, потому что у меня нет новых строк).

Третье: так как я добавляю это в предыдущий файл, я удалил закрытиетег для моего основного родителя, чтобы я мог добавить эти новые данные.Я надеялся, что смогу просто набрать writer.WriteEndElement();, чтобы закрыть последний тег, но так как я не создаю открывающий тег, когда я пишу, он, кажется, не понимает, что есть открытый тег.Есть хороший способ сделать это, или я должен просто закончить в коде, чтобы написать </closingTagName> в конце файла.

Любые комментарии или предложения приветствуются.

1 Ответ

2 голосов
/ 27 июня 2011

Попробуйте:

using (var stringWriter = new StringWriter())
using (var writer = new XmlTextWriter(stringWriter))
{
    writer.WriteRaw("</closingTagName>");

    writer.Formatting = Formatting.Indented;
    writer.Indentation = 10;
    writer.WriteStartElement("Element1");

    writer.WriteStartElement("Element2");
    writer.WriteString("test");
    writer.WriteEndElement();

    writer.WriteEndElement();

    writer.WriteWhitespace(Environment.NewLine);

    writer.WriteStartElement("Element3");
    writer.WriteEndElement();

    var result = stringWriter.ToString();

Результат:

</closingTagName>  -- Closing tag
<Element1>
          <Element2>test</Element2>  -- Line with the ident 10.
</Element1>
              -- extra new line
<Element3 />
...