2

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

 <Title />

但我有点实现创建一个同时显示开始标签和结束标签的 XML。IE

<Title></Title>

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

PS:我将此代码保存在数据库中,在接受数据类型 xml 的表列下,因此添加 string.Empty 在数据库上关闭,因此 FML。有任何想法吗?

4

4 回答 4

2

尝试分配InnerTextXmlNode 与"". 这个动作显然会使其扩展为<> </>形式。

于 2012-07-19T11:39:30.543 回答
1

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

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

    public override void WriteEndElement()
    {
        wrapped.WriteFullEndElement();
    }
于 2012-07-19T12:15:48.003 回答
1

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

我能找到的唯一替代方法是创建您的 XML 文件,然后使用 StreamReader 和 StreamWriter 将完成的 XML 文档加载到带有 StreamReader 的字符串中,使用该Replace()方法查找每个可能为空的标签并将其替换为开始和结束标签,然后使用StreamWriter 用您的新字符串覆盖您的 XML 文件。

将对象序列化为 XML 时以不同方式表示 Null 值

于 2012-07-19T07:59:06.223 回答
1

尝试用 设置标签的值string.Empty

于 2012-07-19T07:58:13.213 回答