使用System.Xml.Linq命名空间显式元素关闭标记

我正在使用(.NET 3.5 SP1)System.Xml.Linq命名空间用数据的div标签填充html模板文档(然后将其保存到磁盘)。 有时div标签是空的,这在HTML方面似乎是一个问题。 根据我的研究,DIV标签不是自动关闭的。 因此,至少在Firefox下,

被认为是一个没有匹配结束标记的开始div标签。

所以,当我通过声明创建新的div元素时:

 XElement divTag = new XElement("div"); 

如何强制生成的XML为

而不是

我不知道为什么你最终得到一个空的DIV(似乎有点无意义!)但是:

 divTag.SetValue(string.Empty); 

应该这样做。

使用XElement divTag = new XElement(“div”,String.Empty); 你得到明确的结束标记

我不知道使用LINQ的问题的答案。 但是在codeplex上有一个名为HTML Agility Pack的项目,它允许您创建和操作HTML文档,这与我们使用System.Xml命名空间类操作XML文档的方式非常相似。

我这样做了 按预期工作。

 myXml = new XElement("script", new XAttribute("src", "value")); myXml .Value = ""; 

结果如下。