C# HTML解析工具HtmlAgilityPack使用實例(一)

1、生成HTML字符串

//生成DOM字符串結構 HtmlNode container = HtmlNode.CreateNode("<div />"); HtmlNode title = HtmlNode.CreateNode("<h3 />"); title.InnerHtml = "張三丰"; HtmlNode link = HtmlNode.CreateNode("<a />"); link.InnerHtml = "點擊進入"; link.SetAttributeValue("href", "http://wwww.gongjuji.net"); container.AppendChild(title).AppendChild(link); Console.WriteLine(container.OuterHtml);



2、解析HTML字符串或本地html文件

//解析html 字符串或者本地html文件 HtmlDocument doc = new HtmlDocument(); string html = "<div id=\"demo\"><span style=\"color: red; \"><h1>Hello</h1> </span></div>"; doc.LoadHtml(html); HtmlNode demo = doc.GetElementbyId("demo"); Console.WriteLine(demo.InnerHtml); //注:InnerText中會有換行或空格等,須要特殊處理 Console.WriteLine(demo.InnerText); Console.WriteLine(demo.InnerText.Length);


3、解析處理結合XPath使用更加方便

XPath簡明介紹
 XPath 使用路徑表達式來選取 XML 文檔中的節點或節點集。節點是經過沿着路徑 (path) 或者步 (steps) 來選取的。
 下面列出了最有用的路徑表達式:
 nodename:選取此節點的全部子節點。 
 /:從根節點選取。 
 //:從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。 
 .:選取當前節點。 
 ..:選取當前節點的父節點。
php

 例若有下面一段XML:
 html

<?xml version="1.0" encoding="utf-8"?> <Articles> <Article> <Title>在ASP.NET中使用Highcharts js圖表</title> <Url>http://zhoufoxcn.blog.51cto.com/792419/537324</Url> <CreateAt type="en">2011-04-07</price> </Article> <Article> <Title lang="eng">Log4Net使用詳解(續)</title> <Url>http://blog.csdn.net/zhoufoxcn/archive/2010/11/23/6029021.aspx</Url> <CreateAt type="zh-cn">2010年11月23日</price> </Article> <Article> <Title>J2ME開發的通常步驟</title> <Url>http://blog.csdn.net/zhoufoxcn/archive/2011/06/12/6540223.aspx</Url> <CreateAt type="zh-cn">2011年06月12日</price> </Article> <Article> <Title lang="eng">PowerDesign高級應用</title> <Url>http://zhoufoxcn.blog.51cto.com/792419/166415</Url> <CreateAt type="zh-cn">2007-09-08</price> </Article> </Articles> 

 

  針對上面的XML文件,咱們列出了帶有謂語的一些路徑表達式,以及表達式的結果:
 /Articles/Article[1]:選取屬於Articles子元素的第一個Article元素。 
 /Articles/Article[last()]:選取屬於Articles子元素的最後一個Article元素。 
 /Articles/Article[last()-1]:選取屬於Articles子元素的倒數第二個Article元素。 
 /Articles/Article[position()<3]:選取最前面的兩個屬於 bookstore 元素的子元素的Article元素。 
 //title[@lang]:選取全部擁有名爲lang的屬性的title元素。 
 //CreateAt[@type='zh-cn']:選取全部CreateAt元素,且這些元素擁有值爲zh-cn的type屬性。 
 /Articles/Article[Order>2]:選取Articles元素的全部Article元素,且其中的Order元素的值須大於2。 
 /Articles/Article[Order<3]/Title:選取Articles元素中的Article元素的全部Title元素,且其中的Order元素的值須小於3。node

相關文章
相關標籤/搜索