【发布时间】:2020-08-04 07:40:18
【问题描述】:
我需要帮助,因为我真的不习惯使用 HTML。我从我的代码中显示了一个网络文档,该网络文档读取了一个 HTML 文件,其中包含一些图像。 每次,就在 Image 标签之前,我观察到两个标签创建了一些错误的字符。一个例子会更好。
<p ><br clear=all> </span>
<img border=0 width=265 height=105 id="Picture 84856"
src="Test_HTML/image272.jpg"></p>
打印部分正确,因为它显示了图像和许多错误的字符。 所以我决定尝试剪掉标签。
我不知道该怎么做。也许我完全错了,但我认为这是一个好的开始,不是吗? 我在 Html 节点中抑制这些标签的测试是
public void ShowTag(string tag)
{
string innerHtml= "//div[@id='"+tag+ "']";
string inner = "//p";
string brToRemove = "//br";
string spanToRemove = "//span";
var nodes = document.DocumentNode.SelectSingleNode(innerHtml);
bool br_deleted = false;
foreach (HtmlNode nd in nodes.SelectNodes(inner))
{
foreach (HtmlNode child in nd.ChildNodes)
{
if (child.Name == "br")
{
int a = 0;
a++;
child.ParentNode.RemoveChild(child);
br_deleted = true;
}
if(child.Name=="span")
{
int b = 0;
b++;
if (br_deleted == true)
{
//nd.ParentNode.RemoveChild(child);
child.Remove();
br_deleted = false;
}
}
}
}
但我无法移除孩子,你知道吗?
【问题讨论】:
-
您最好告诉创建类似 HTML 的垃圾的人编写正确的标记代码。事后修复损坏的代码毫无意义。
-
你说得对,但如果由于某些原因我找不到其他解决方案,我必须想办法。
-
好吧,如果 HTML 解析器必须解析的不是有效的 HTML,那么它们只能做这么多。您可能必须使用 RegEx 来实际创建有效的 HTML。
-
最后是垃圾进,垃圾出。同样,只改变垃圾部分可能值得一试,因为无论你多么努力,你都无法从垃圾中神奇地创造黄金。
-
Effectevely ,你有权利这是不正常的,但它来自转换 WORD 到 HTML。主要问题来自于儿童进入循环并且我无法修改集合的事实。
标签: c# html-agility-pack