关于XmlTextWriter的几个问题

时间:2011-06-27 04:01:06

标签: c# .net xml xml-serialization xmltextwriter

我是编辑XML的新手,我对遇到的问题有几个问题。

首先:如何在每个writer.WriteEndElement();之后添加新行。我找到了使用writer.WriteWhitespace("\n");的示例,但它似乎没有任何新行。

第二:我认为这可能没有做任何事情,因为之前的问题,但我想在最后使用它来缩进我的代码:writer.Formatting = Formatting.Indented;,但它似乎没有做任何事情(很可能是因为我没有新的线路。)

第三:因为我将它附加到前一个文件,我删除了我的主父母的结束标记,以便我可以添加这个新数据。我希望我能有一个writer.WriteEndElement();来关闭最终标签,但是因为我在写这篇文章时没有创建一个开头标记,所以它似乎没有意识到有一个开放的标签。有没有一种好方法可以做到这一点,或者我应该以代码结束在文件末尾写</closingTagName>

感谢任何意见或建议。

1 个答案:

答案 0 :(得分:2)

试试这个:

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 />