Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTML Agility pack-从相对路径解析img src和href_C#_Html Agility Pack - Fatal编程技术网

C# HTML Agility pack-从相对路径解析img src和href

C# HTML Agility pack-从相对路径解析img src和href,c#,html-agility-pack,C#,Html Agility Pack,我有一个html,其中有img src和link href作为相对路径。我需要从相对移动到完整的url路径,如“http://localhost:port..“使用Html敏捷包 S3中的src=“/Expo/imagename.s3lb” href=“../Etch/Exposition/…aspx?sflang=en” 有人能告诉我一个方法吗?谢谢 我现在无法测试或运行此功能,但您可以尝试类似的功能: var htmlStr = "yourhtml"; var doc = new HtmlD

我有一个html,其中有img src和link href作为相对路径。我需要从相对移动到完整的url路径,如“http://localhost:port..“使用Html敏捷包

S3中的src=“/Expo/imagename.s3lb” href=“../Etch/Exposition/…aspx?sflang=en”


有人能告诉我一个方法吗?谢谢

我现在无法测试或运行此功能,但您可以尝试类似的功能:

var htmlStr = "yourhtml";
var doc = new HtmlDocument();
doc.LoadHtml(htmlStr);
var baseUri = new Uri("baseUriOfYourSite");
var images = doc.DocumentNode.SelectNodes("//img/@src").ToList();
var links = doc.DocumentNode.SelectNodes("//a/@href").ToList();
foreach (var item in images.Concat(links))
{
    item.InnerText =  new Uri(baseUri, item.InnerText).AbsoluteUri;    
}

我不确定InnerText是否可以作为setter。如果没有,则需要调用item.ParentNode.ReplaceChild(newNode,item);然而,主要的事情是使用Uri构造函数,它接受基本Uri和片段。它将把您提供的内容组合成一个绝对uri。