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中使用此代码
什么是Html Agility Pack(HAP)?
这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心......).它是一个.NET代码库,允许您解析"out of the web"HTML文件.解析器非常容忍"真实世界"格式错误的HTML.对象模型与提出System.Xml非常相似,但对于HTML文档(或流).
下载包含几个示例项目 - 检查它们以了解如何操作HTML文件.