使用XMLDocument save()方法保存时,如何在空元素中强制使用XML关闭标记?

时间:2013-10-21 19:19:35

标签: c# xml

我正在尝试创建以下格式的XML文件:

<NodeTag>
  <Tag1>tag 1 data</Tag1>
  <Tag2></Tag2>  
</NodeTag>

使用像这样的标准XmlWriter:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.Unicode;
settings.CloseOutput = true;
settings.Indent = true;
settings.NewLineOnAttributes = false;
XmlWriter writer = XmlWriter.Create(xmlFilePath, settings);

myXmlDoc.save(writer)

我得到的输出如下:

<NodeTag>
  <Tag1>tag 1 data</Tag1>
  <Tag2 />  
</NodeTag>

我在XmlWriterSettings中找不到控制是否写入完整元素的任何设置。

我尝试通过覆盖WriteEndElement()来创建一个写完整元素的类:

class XmlFullElementTextWriter : XmlTextWriter
{
    public XmlFullElementTextWriter(TextWriter tw) : base(tw) { }
    public XmlFullElementTextWriter(Stream s, Encoding e) : base(s, e) { }
    public XmlFullElementTextWriter(String s, Encoding e) : base(s, e) { }

    public override void WriteEndElement()
    {
        base.WriteFullEndElement();
    }
}

我称之为:

XmlFullElementTextWriter writer = new XmlFullElementTextWriter(xmlFilePath, Encoding.Unicode);
writer.Formatting = Formatting.Indented;
myXmlDoc.save(writer);

给了我这个:

<NodeTag>
  <Tag1>tag 1 data</Tag1>
  <Tag2>
  </Tag2>  
</NodeTag>

我知道不同的形式是等价的,但我需要这样。

注意 - 我正在使用在.NET Framework 4.5.50709上运行的Visual Studio 2012

0 个答案:

没有答案