Roc*_*ngh 1 c# regex asp.net .net-4.0
我有一个字符串形式的页面的html源代码:
<html>
<head>
<link rel="stylesheet" type="text/css" href="/css/all.css" />
</head>
<body>
<a href="/test.aspx">Test</a>
<a href="http://mysite.com">Test</a>
<img src="/images/test.jpg"/>
<img src="http://mysite.com/images/test.jpg"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想将所有相对路径转换为绝对路径.我希望输出为:
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://mysite.com/css/all.css" />
</head>
<body>
<a href="http://mysite.com/test.aspx">Test</a>
<a href="http://mysite.com">Test</a>
<img src="http://mysite.com/images/test.jpg"/>
<img src="http://mysite.com/images/test.jpg"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
注意:我只希望在该字符串中将相对路径转换为绝对路径.不应该触及已经存在于该字符串中的绝对值,它们对我来说很好,因为它们已经是绝对的.这可以通过正则表达式或其他方式完成吗?
L.B*_*L.B 18
不要尝试解析html与正则表达式在这里expained /sf/answers/121271811/和/sf/answers/123071371/
使用HTML解析器像HtmlAgilityPack代替
string html =
@"<html>
<head>
<link rel=""stylesheet"" type=""text/css"" href=""/css/all.css"" />
</head>
<body>
<a href=""/test.aspx"">Test</a>
<a href=""http://example.com"">Test</a>
<img src=""/images/test.jpg""/>
<img src=""http://example.com/images/test.jpg""/>
</body>
</html>";
StringWriter writer = new StringWriter();
string baseUrl= "http://example.com";
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
foreach(var img in doc.DocumentNode.Descendants("img"))
{
img.Attributes["src"].Value = new Uri(new Uri(baseUrl), img.Attributes["src"].Value).AbsoluteUri;
}
foreach (var a in doc.DocumentNode.Descendants("a"))
{
a.Attributes["href"].Value = new Uri(new Uri(baseUrl), a.Attributes["href"].Value).AbsoluteUri;
}
doc.Save(writer);
string newHtml = writer.ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7723 次 |
| 最近记录: |