在 XmlDocument 中,无论是在以后编写和修改时,是否都可以删除 />
某个元素的自闭合标签(即 )。
例如:改变
<img />
或<img></img>
到<img>
。<br />
到<br>
.
你为什么问?我正在尝试符合Word 2007架构的HTML ;生成的 HTML 将显示在Microsoft Outlook 2007或更高版本中。
在阅读了另一个StackOverflow 问题后,我尝试将IsEmpty
属性设置为false
这样。
var imgElements = finalHtmlDoc.SelectNodes("//*[local-name()=\"img\"]").OfType<XmlElement>();
foreach (var element in imgElements)
{
element.IsEmpty = false;
}
然而,这导致<img />
成为<img></img>
。此外,作为一个黑客,我还尝试OuterXml
直接更改属性,但是这不起作用(没想到会这样)。
问题
您可以从中删除自闭合标签XmlDocument
吗?老实说,我认为不存在,因为它将是无效的 xml(没有结束标记),但是我认为我会将这个问题抛出社区。
更新:
XmlDocument
从使用正则表达式(用精彩的RegexBuddy编写)导出后,我最终修复了 HTML 字符串。
var fixHtmlRegex = new Regex("<(?<tag>meta|img|br)(?<attributes>.*?)/>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
return fixHtmlRegex.Replace(htmlStringBuilder.ToString(), "<$1$2>");
它清除了验证过程中的许多错误,让我可以专注于真正的兼容性问题。