Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于XmlTextWriter的几个问题_C#_.net_Xml_Xml Serialization_Xmltextwriter - Fatal编程技术网

C# 关于XmlTextWriter的几个问题

C# 关于XmlTextWriter的几个问题,c#,.net,xml,xml-serialization,xmltextwriter,C#,.net,Xml,Xml Serialization,Xmltextwriter,我是编辑XML的新手,我遇到了一些问题 第一:如何在每个writer.WriteEndElement()之后添加新行。我找到了使用writer.WriteWhitespace(“\n”)的示例但它似乎没有产生任何新行 第二:由于前面的问题,我认为这可能没有任何作用,但我想在结尾使用它缩进我的代码:writer.Formatting=Formatting.Indented,但它似乎没有任何作用(很可能是因为我没有新行) 第三:因为我要把这个附加到以前的文件中,所以我去掉了我主要父母的结束标记,以便

我是编辑XML的新手,我遇到了一些问题

第一:如何在每个
writer.WriteEndElement()之后添加新行。我找到了使用
writer.WriteWhitespace(“\n”)的示例但它似乎没有产生任何新行

第二:由于前面的问题,我认为这可能没有任何作用,但我想在结尾使用它缩进我的代码:
writer.Formatting=Formatting.Indented,但它似乎没有任何作用(很可能是因为我没有新行)

第三:因为我要把这个附加到以前的文件中,所以我去掉了我主要父母的结束标记,以便我可以添加这个新数据。我希望我能有一个
writer.WriteEndElement()
关闭最后一个标记,但由于我在编写时没有创建开始标记,因此似乎没有意识到有一个开始标记。有没有一个好方法可以做到这一点,或者我应该以代码结尾,在文件末尾编写

欢迎提出任何意见或建议。

试试以下方法:

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();
使用(var stringWriter=new stringWriter())
使用(var writer=newXMLTextWriter(stringWriter))
{
writer.WriteRaw(“”);
writer.Formatting=格式化.缩进;
writer.Indentation=10;
writer.writeStart元素(“元素1”);
writer.writeStart元素(“元素2”);
写作测试(“测试”);
writer.writeedelement();
writer.writeedelement();
writer.WriteWhitespace(Environment.NewLine);
writer.writeStart元素(“元素3”);
writer.writeedelement();
var result=stringWriter.ToString();
结果:

</closingTagName>  -- Closing tag
<Element1>
          <Element2>test</Element2>  -- Line with the ident 10.
</Element1>
              -- extra new line
<Element3 />
——结束标记
测试——与识别号10一致。
--额外的新线路

首先,你不应该留下一个单独的开始标记…始终添加完整的元素,包括开始标记和结束标记…如果你有一些未指定数量的元素,那么只需为它们创建子元素并将它们添加到父元素中。我立即删除它。我开始写入它,然后关闭它again@Johnston-你说它没有是什么意思“不行。我在粘贴到这里之前测试了这段代码,还粘贴了
result
string的输出。@约翰斯顿-另外,我不建议同时使用identiation和新行,因为编写者会因此感到困惑。只使用identiation.hmm删除格式代码似乎可以解决这一问题。。谢谢!