繁体   English   中英

为自动关闭标签添加斜杠

[英]add slash to self-closing tags

我需要解析一大块html,我从一个页面获取到一个xml。 当我将它们放入XmlDocument时,大多数标签转换得很好,除了未关闭的自闭标签(xmlDocument不喜欢这些标签)。 不幸的是,我不能在页面本身添加这些,因为它是由第三方引擎生成的。 所以我必须自己添加它们。 我在Regex上的表现并不是很好,所以我需要一些关于如何将这些“/”添加到其中一个的帮助

感谢任何输入。

我建议使用HTML Agility Pack来解析它。 该包具有写入XML的能力,并将为您处理所有标签的关闭(以及CDATA包装和您可能遇到的其他棘手问题)。 例如,这是您可以将HTML转换为XML的方法:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

string HTML = "<HTML><body><a href ='something'> <img src='a.jpg'></a></HTML>";

doc.LoadHtml(HTML);
MemoryStream ms = new MemoryStream();
XmlWriter xml = XmlWriter.Create(ms);
doc.OptionOutputAsXml = true;
doc.Save(xml);

ms.Position = 0;
StreamReader sr = new StreamReader(ms);
Debug.WriteLine (sr.ReadToEnd());

哪个呈现输出:

<?xml version="1.0" encoding="iso-8859-1"?><html><body><a href="something"> <img src="a.jpg" /></a></body></html>

HTML不是XML。 别试试。 它不会起作用。 即使现在有效,也不会明天。 如果您想要一个示例,请尝试将以下内容解析为XML,即使它是完全有效的HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd"> 
<HTML/
  <HEAD/
    <TITLE/>/
     <P/>

使用HTML解析器; 我可以推荐HTML敏捷包。

对于非标准标记,您可能必须将标记名称添加到HtmlAgilityPack.HtmlNode.ElementsFlags。

防爆。 HtmlAgilityPack.HtmlNode.ElementsFlags.Add(“spanspec”,HtmlElementFlag.Empty);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM