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

ahm*_*iee 2 html c# asp.net 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>Untitled Page</title>
</head>
<body>
    <a href="http://google.com"></a>
    <a href="http://gmail.com"></a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

对此:

<!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>
Run Code Online (Sandbox Code Playgroud)

这意味着我想追加hrefin 的值<a>

我尝试过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);
Run Code Online (Sandbox Code Playgroud)

并且s是我的HTML流.

有谁知道我怎么能这样做?

我想在ASP.NET中使用此代码

Ode*_*ded 6

看一下HTML Agility Pack.

什么是Html Agility Pack(HAP)?

这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心......).它是一个.NET代码库,允许您解析"out of the web"HTML文件.解析器非常容忍"真实世界"格式错误的HTML.对象模型与提出System.Xml非常相似,但对于HTML文档(或流).

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

  • @ahmadalishafiee - 你需要仔细阅读我发布的内容.当您下载HTML Agility Pack时,在下载过程中,有一些示例Visual Studio项目可以执行各种操作.看看他们,阅读他们,向他们学习. (2认同)