在Windows Phone中使用HtmlAgilityPack添加指向图像的链接

c# html-agility-pack windows-phone-7

我想为HTML中的每个图像添加一个链接,其中“href”属性的值是图像的“src”属性。即改变了

 "<p> <img src="test.jpg"/></p>"

 "<p> <img src="test.jpg"/></p>"

我的代码来了:

 "<p> <img src="test.jpg"/></p>"

那么我应该如何修改我的代码以使其工作?

更新:更新我的代码后:

 "<p> <img src="test.jpg"/></p>"

错误显示“未处理的InvalidOperationException”。

在此处输入图像描述

一般承认的答案

首先,您可以使用xpath选择父节点不是<a> <img>节点:

var imgs = doc.DocumentNode.SelectNodes("//img[not(parent::a)]").ToList();

然后你应该迭代这些节点。在每个迭代步骤中,只需为它创建一个新的''元素,附加迭代'',然后用新创建的<a>替换'':

var imgs = doc.DocumentNode.SelectNodes("//img[not(parent::a)]").ToList();

热门答案

试试:

string replaceStr = string.Format("<a href=\"{0}\">{1}</a>", node.GetAttributeValue("src", null), node.OuterHtml);
var newNode = HtmlNode.CreateNode(replaceStr);
node.ParentNode.ReplaceChild(newNode.ParentNode, node);

并改变

string replaceStr = string.Format("<a href=\"{0}\">{1}</a>", node.GetAttributeValue("src", null), node.OuterHtml);
var newNode = HtmlNode.CreateNode(replaceStr);
node.ParentNode.ReplaceChild(newNode.ParentNode, node);

通过

string replaceStr = string.Format("<a href=\"{0}\">{1}</a>", node.GetAttributeValue("src", null), node.OuterHtml);
var newNode = HtmlNode.CreateNode(replaceStr);
node.ParentNode.ReplaceChild(newNode.ParentNode, node);

HtmlAgilityPack替换节点




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因