【问题标题】:Explicit Element Closing Tags with System.Xml.Linq Namespace带有 System.Xml.Linq 命名空间的显式元素关闭标记
【发布时间】:2009-01-20 19:31:45
【问题描述】:

我正在使用 (.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 />

【问题讨论】:

    标签: c# xml linq-to-xml


    【解决方案1】:

    我不确定你为什么会得到一个空的 DIV(似乎有点毫无意义!)但是:

    divTag.SetValue(string.Empty);
    

    应该这样做。

    【讨论】:

    • 是的,我这有点毫无意义。我只是懒惰,不想写一堆 if-checks 来确定我是否应该将这些标签写入底层文档。
    【解决方案2】:

    有 XElement divTag = new XElement("div", String.Empty); 你得到明确的结束标签

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我做到了。按预期工作。

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

        结果如下。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-14
          • 1970-01-01
          • 2017-11-11
          相关资源
          最近更新 更多