1

我目前正在处理一个内部包含 RSS 提要的 XML 文档。我想解析它,以便如果找到一个类名为“feedflare”的 div 标签,代码将删除整个 DIV。

我找不到这样做的示例,因为对它的搜索被“HTML 编辑器错误”和其他不相关的数据污染了。

这里有人愿意分享实现我目标的方法吗?

我必须声明,如果可以避免的话,我不想使用 HtmlAgilityPack 。

这是我的过程:

加载 XML,解析元素并挑选出标题、描述、链接。然后将所有这些保存为 HTML(以编程方式添加标签以构建网页),然后当添加所有标签时,我想解析生成的“HTML 文本”并删除烦人的 DIV 标签。

让我们假设“字符串 HTML = textBox1.text”,其中 textBox1 是在解析主 XML 文档之后粘贴结果 HTML 的位置。

然后我将如何遍历 textBox1.text 的内容并仅删除名为“feedflare”的 div 标签(见下文)。

<div class="feedflare">
<a href="http://feeds.gawker.com/~ff/kotaku/full?a=lB-zYAGjzDU:1zqeSgzxt90:yIl2AUoC8zA">
<img src="http://feeds.feedburner.com/~ff/kotaku/full?d=yIl2AUoC8zA" border="0"></img></a> 
<a href="http://feeds.gawker.com/~ff/kotaku/full?a=lB-zYAGjzDU:1zqeSgzxt90:H0mrP-F8Qgo">
<img src="http://feeds.feedburner.com/~ff/kotaku/full?d=H0mrP-F8Qgo" border="0"></img></a> 
<a href="http://feeds.gawker.com/~ff/kotaku/full?a=lB-zYAGjzDU:1zqeSgzxt90:D7DqB2pKExk">
<img src="http://feeds.feedburner.com/~ff/kotaku/full?i=lB-zYAGjzDU:1zqeSgzxt90:D7DqB2pKExk" border="0"></img></a> 
<a href="http://feeds.gawker.com/~ff/kotaku/full?a=lB-zYAGjzDU:1zqeSgzxt90:V_sGLiPBpWU">
<img src="http://feeds.feedburner.com/~ff/kotaku/full?i=lB-zYAGjzDU:1zqeSgzxt90:V_sGLiPBpWU" border="0"></img></a>
</div>

先感谢您。

4

3 回答 3

0

使用这个 xml 库,执行:

XElement root = XElement.Load(file); // or .Parse(string);
XElement div = root.XPathElement("//div[@class={0}]", "feedflare");
div.Remove();
root.Save(file); // or string = root.ToString();
于 2012-06-22T13:35:29.427 回答
0

试试这个

   System.Xml.XmlDocument d = new System.Xml.XmlDocument();
   d.LoadXml(Your_XML_as_String);
    foreach(System.Xml.XmlNode n in d.GetElementsByTagName("div"))
   d.RemoveChild(n);

并用于d.OuterXml检索新的 xml。

于 2012-07-11T00:42:41.093 回答
0

我在 Javascript 中的解决方案是:

function unrichText(texto) {
  var n = texto.indexOf("\">"); //Finding end of "<div&nbsp;class="ExternalClass...">
  var sub = texto.substring(0, n+2); //Adding first char and last two (">)
  var tmp = texto.replace(sub, ""); //Removing it
  tmp = replaceAll(tmp, "</div>", ""); //Removing last "div"
  tmp = replaceAll(tmp, "<p>", ""); //Removing other stuff
  tmp = replaceAll(tmp, "</p>", "");
  tmp = replaceAll(tmp, "&#160;", "");
  return (tmp);
}

function replaceAll(str, find, replace) {
    return str.replace(new RegExp(find, 'g'), replace);
}
于 2019-04-05T15:36:15.677 回答