Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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标记的属性(如a)_C#_Asp.net_Html_C# 4.0 - Fatal编程技术网

C# 如何编辑所有特殊html标记的属性(如a)

C# 如何编辑所有特殊html标记的属性(如a),c#,asp.net,html,c#-4.0,C#,Asp.net,Html,C# 4.0,我正在尝试使用c#编辑所有特殊html标记(如a)的属性。例如,我想更改此代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>U

我正在尝试使用c#编辑所有特殊html标记(如a)的属性。例如,我想更改此代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
</head>
<body>
    <a href="http://google.com"></a>
    <a href="http://gmail.com"></a>
</body>
</html>
s
是我的html流

有人知道我怎么做吗

我想把这段代码放在ASP.NET中

看看

什么是Html敏捷包(HAP)

这是一个敏捷的HTML解析器,它构建读/写DOM并支持纯XPATH或XSLT(您实际上不必理解XPATH或XSLT就可以使用它,不用担心……)。它是一个.NET代码库,允许您解析“web外”HTML文件。解析器对“真实世界”格式错误的HTML非常宽容。对象模型与System.Xml非常相似,但适用于HTML文档(或流)

下载包含几个示例项目-查看它们以了解如何操作HTML文件。

将runat=“server”放在标记中,如下所示:

<a runat="server" ID="linkGmail" ....></a>

您只需搜索每个
http://
https://
并根据需要更改它们

您应该使用
Microsoft.VisualBasic.Strings
函数

阅读有关Microsoft.VisualBasic.Strings函数的详细信息

下面是一个示例代码:

string s; //store html content in this variable.

int i = Microsoft.VisualBasic.Strings.InStr(1, s.ToLower(), "http://");
int j1 = Microsoft.VisualBasic.Strings.InStr(i+1,s.ToLower(),"\""); 
int j2 = Microsoft.VisualBasic.Strings.InStr(i+1,s.ToLower(),"'");
int j;
if ((j1 < j2) && (j1 > i))
    j = j1;
else
    j = j2;

s = Microsoft.VisualBasic.Strings.Mid(s,1,i-1) + "http://www.go.go/default.aspx?url=" + Server.UrlEncode(Microsoft.VisualBasic.Strings.Mid(s,i,j-i)) + Microsoft.VisualBasic.Strings.Mid(s,j);
字符串s//将html内容存储在此变量中。
int i=Microsoft.VisualBasic.Strings.InStr(1,s.ToLower(),“http:/”;
int j1=Microsoft.VisualBasic.Strings.InStr(i+1,s.ToLower(),“\”);
int j2=Microsoft.VisualBasic.Strings.InStr(i+1,s.ToLower(),“');
int j;
如果((j1i))
j=j1;
其他的
j=j2;
s=Microsoft.VisualBasic.Strings.Mid(s,1,i-1)+”http://www.go.go/default.aspx?url=“+Server.UrlEncode(Microsoft.VisualBasic.Strings.Mid(s,i,j-i))+Microsoft.VisualBasic.Strings.Mid(s,j);
此代码将把第一个
http://
表单的实际地址更改为您想要的内容

您可以创建一个while循环并重复此操作以替换每个链接。(请记住排除
http://www.go.go/default.aspx?

请注意,我的代码可能需要一些小的更改(例如可能是
i+1
而不是
i
或类似的东西!)


编辑:这种方式存在一些问题,例如,它不支持内部链接。您应该搜索标记(例如
).

我知道它不是C#,但也许jQuery更适合您的需要?不过,看起来您需要保存html内容。在这种情况下,请按照建议使用html功能包below@Bertvan:请参阅,我想从我的网站创建所有链接。然后将用户重定向到原始网站。@ahmadali shafiee:它不需要asp.net,这只是你普通的.net类库。@Oded:我如何使用HTML Agility Pack来实现这一点?@Ahmadalishafie-看一下下载中的示例。@Oded:但是示例是错误的!@Ahmadalishafie-你需要更仔细地阅读我发布的内容。当你下载HTML Agility Pack时,在下载中,有一个示例Visual Studio项目做着各种各样的事情。看看它们,阅读它们,从中学习。你不明白我说的是什么,你试图解析HTML并替换所有出现的属性?我以为你的意思是你想替换ASPX页面中代码中链接的href属性。不是这样吗?不,我正在下载html文件(网页)在
中,然后我想更改
链接的
href
值。我想开发一个类似
PHProxy
的项目,但使用
.net
。我认为有更好的方法代替文本处理。我认为最好的方法是Oded的答案,但你说你不能使用该库。不!我是识别我的Html敏捷包问题
<a runat="server" ID="linkGmail" ....></a>
linkGmail.Attributes["href"] = "http://go.go/default.aspx?url=http://gmail.com";
string s; //store html content in this variable.

int i = Microsoft.VisualBasic.Strings.InStr(1, s.ToLower(), "http://");
int j1 = Microsoft.VisualBasic.Strings.InStr(i+1,s.ToLower(),"\""); 
int j2 = Microsoft.VisualBasic.Strings.InStr(i+1,s.ToLower(),"'");
int j;
if ((j1 < j2) && (j1 > i))
    j = j1;
else
    j = j2;

s = Microsoft.VisualBasic.Strings.Mid(s,1,i-1) + "http://www.go.go/default.aspx?url=" + Server.UrlEncode(Microsoft.VisualBasic.Strings.Mid(s,i,j-i)) + Microsoft.VisualBasic.Strings.Mid(s,j);