2011-06-27 137 views
3

我是编辑XML的新手,我遇到了一些问题。关于XmlTextWriter的几个问题

第一:如何在每个writer.WriteEndElement();之后添加新行。我发现使用writer.WriteWhitespace("\n");的例子,但它似乎没有任何新的行。

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

第三:由于我将它附加到前一个文件中,我剥离了我的主父项的结束标记,以便我可以添加此新数据。我希望我只能有一个writer.WriteEndElement();关闭最后的标签,但因为我没有创建一个开放标签,当我写它似乎并没有意识到有一个开放的标签。有没有一个好的方法来做到这一点,或者我应该结束代码,在文件末尾写上</closingTagName>

任何意见或建议表示赞赏。

+1

首先,你应该不是在所有留下一个开放标记的孤儿......总是添加完整的元素既打开了关闭标签...如果你有一些未指定数量的元素,那么只需为它们创建子元素并将它们添加到父元素中。 –

+0

我删除它正确的b4我开始写它,然后我再次关闭它 – Johnston

回答

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

关闭标签工作,但我的间距/格式仍然does not – Johnston

+1

@约翰斯顿 - 你是什么意思,它没有工作。我在粘贴之前测试了这段代码,并粘贴了'result'字符串的输出。 –

+1

@约翰斯顿 - 另外,我不建议同时使用身份证和新线,因为作者因此而感到困惑。只使用标识。 –