我有一个创建XDocument的代码,在那里,我使用System.Xml.Linq类添加XElements。唯一的问题是,如果xml节点没有值,它将返回一个已经关闭的标签。即。
<Title />
但我有点想要创建一个显示开始标记和关闭标记的XML。即。
<Title></Title>
即使它没有价值。有什么方法可以让它看起来像这样吗?
P.S。:我将此代码保存在数据库中,在接受数据类型xml的表列下,因此添加一个string.Empty将在数据库上关闭,所以FML。有什么想法吗?
答案 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();
}