强制XML有Closing标签?

时间:2012-07-19 07:51:47

标签: wpf xml silverlight

我有一个创建XDocument的代码,在那里,我使用System.Xml.Linq类添加XElements。唯一的问题是,如果xml节点没有值,它将返回一个已经关闭的标签。即。

 <Title />

但我有点想要创建一个显示开始标记和关闭标记的XML。即。

<Title></Title>

即使它没有价值。有什么方法可以让它看起来像这样吗?

P.S。:我将此代码保存在数据库中,在接受数据类型xml的表列下,因此添加一个string.Empty将在数据库上关闭,所以FML。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

尝试使用InnerText分配XmlNode的""。此操作显然会使其扩展为<> </>形式。

答案 1 :(得分:1)

尝试使用string.Empty设置标记的值。

答案 2 :(得分:1)

您可以使用[XmlElement(IsNullable = true)]属性来表示xsi:nil="true"的空值,这是我可以得到的。

我能找到的唯一选择是创建XML文件,然后使用StreamReader和StreamWriter将已完成的XML文档加载到StreamReader的字符串中,使用Replace()方法查找并替换每个可能的null标记使用开始和结束标记,然后使用StreamWriter用新字符串覆盖XML文件。

Representing Null values differently when serializing objects to XML

答案 3 :(得分:1)

使用XDocument.WriteTo方法将XDocument写入XmlWriter。实现一个自定义的XmlWriter,它包装通过XmlWriter.Create获得的标准XmlWriter,并将您的自定义XmlWriter传递给WriteTo方法。

自定义XmlWriter应该简单地将所有未修改的调用传递给包装的XmlWriter,但WriteEndElement方法应该是:

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