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

本文关键字:html 属性 何编辑 编辑 | 更新日期: 2023-09-27 18:22:30

我正在尝试使用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>

到此:

<!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://go.go/default.aspx?url=http://google.com">
    </a><a href="http://go.go/default.aspx?url=http://gmail.com"></a>
</body>
</html>

这意味着我想在<a> 中附加href的值

我尝试了LinqToXML,但它不起作用,因为HTML不是有效的XML(因为DOCTYPE标记)

这是我的代码:

XDocument xmlFile = XDocument.Load(s);
var query = from c in xmlFile.Elements("html").Elements("body").Elements("a")
            select c;
foreach (XElement book in query)
{
    string atr = book.Attribute("href").Value;
    book.Attribute("href").Value = "http://ahmadalli.somee.com/default.aspx?url=" + atr;
}
xmlFile.Save(s);

CCD_ 3是我的html流。

有人知道我该怎么做吗?

我想在ASP.NET

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

中拥有此代码

看看HTML敏捷包。

Html敏捷包(HAP)究竟是什么?

这是一个敏捷的HTML解析器,它构建了一个读/写DOM,并支持普通的XPATH或XSLT(你实际上不需要理解XPATH也不需要XSLT就可以使用它,别担心…);出网";HTML文件。解析器对";真实世界";格式错误的HTML。对象模型与System.Xml非常相似,但适用于HTML文档(或流)。

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

您可以简单地搜索每个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);

此代码将把第一个http://形式的实际地址更改为您想要的内容。

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

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

编辑:这种方式有一些问题,例如,它不支持内部链接。您应该搜索标签(例如<a)并处理其中的内部链接(直到>

将runat="server"放入标签中,如下所示:

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

然后在代码中,您可以更改href属性的值,如下所示:

linkGmail.Attributes["href"] = "http://go.go/default.aspx?url=http://gmail.com";