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

时间:2009-01-20 19:31:45

标签: c# xml linq-to-xml

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

所以,当我通过声明:

创建新的div元素时
XElement divTag = new XElement("div"); 

如何强制生成的XML为<div></div>而不是<div />

4 个答案:

答案 0 :(得分:5)

我不确定为什么你最终会得到一个空的DIV(看起来有点无意义!)但是:

divTag.SetValue(string.Empty);

应该这样做。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我这样做了。按预期工作。

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

以下是结果。

<script src = "value"></script>