我正在尝试创建以下形式的 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