利用Dom操作字符串一例
更新時間:2012年01月12日 01:12:13 作者:
利用Dom操作字符串一例,需要的朋友可以參考下。
有時對字符串的處理可以利用Dom模式,例如下面字符串:
<a1>a1的值</a1><a2>a2的值</a2><a3>a3的值</a3><a4><b4 id='b4'>b4的值</b4></a4>
要將b4元素的值修改為“修改后的b4“。
除了用正則的方法外,還可以考慮Dom操作,下面分別用XmlDocument類和HtmlAgilityPack操作。
方法1,用XmlDocument類:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<xml>" + s + "</xml>");
xmlDoc.SelectSingleNode(@"http://b4").InnerText = "修改后的b4";
Response.Write(Server.HtmlEncode(xmlDoc.DocumentElement.InnerXml));
上面第二句是關鍵,由于源字符串可能缺少唯一的根元素,如本例,所以在外層包裹一對標簽就可以將其轉化為合法的xml文檔,然后修改后的源文本用xmlDoc.DocumentElement.InnerXml取出。當然方法1僅限于源文本近似于xml且比較規(guī)范的場合。
方法2,用HtmlAgilityPack:
string s = @"<a1>a1的值</a1><a2>a2的值</a2><a3>a3的值</a3><a4><b4 id='b4'>b4的值</b4></a4>";
HtmlDocument hxmlDoc = new HtmlDocument();
hxmlDoc.LoadHtml(s);
hxmlDoc.DocumentNode.SelectSingleNode(@"http://b4").InnerHtml = "修改后的b4";
Response.Write(Server.HtmlEncode(hxmlDoc.DocumentNode.InnerHtml));
無須用標簽包裹,因為即使沒有唯一根元素,HtmlAgilityPack仍能正常解析。
以上兩種方法啟示我們對于數據量不太大、執(zhí)行效率要求不太高的數據,可以自行組織成標簽的形式,在程序中使用,也可以存放在文本文件中。相應的讀取寫入操作是比較方便的。讀者可以對Dom操作涉及的類和成員做進一步封裝,簡化相應操作。
<a1>a1的值</a1><a2>a2的值</a2><a3>a3的值</a3><a4><b4 id='b4'>b4的值</b4></a4>
要將b4元素的值修改為“修改后的b4“。
除了用正則的方法外,還可以考慮Dom操作,下面分別用XmlDocument類和HtmlAgilityPack操作。
方法1,用XmlDocument類:
復制代碼 代碼如下:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<xml>" + s + "</xml>");
xmlDoc.SelectSingleNode(@"http://b4").InnerText = "修改后的b4";
Response.Write(Server.HtmlEncode(xmlDoc.DocumentElement.InnerXml));
上面第二句是關鍵,由于源字符串可能缺少唯一的根元素,如本例,所以在外層包裹一對標簽就可以將其轉化為合法的xml文檔,然后修改后的源文本用xmlDoc.DocumentElement.InnerXml取出。當然方法1僅限于源文本近似于xml且比較規(guī)范的場合。
方法2,用HtmlAgilityPack:
復制代碼 代碼如下:
string s = @"<a1>a1的值</a1><a2>a2的值</a2><a3>a3的值</a3><a4><b4 id='b4'>b4的值</b4></a4>";
HtmlDocument hxmlDoc = new HtmlDocument();
hxmlDoc.LoadHtml(s);
hxmlDoc.DocumentNode.SelectSingleNode(@"http://b4").InnerHtml = "修改后的b4";
Response.Write(Server.HtmlEncode(hxmlDoc.DocumentNode.InnerHtml));
無須用標簽包裹,因為即使沒有唯一根元素,HtmlAgilityPack仍能正常解析。
以上兩種方法啟示我們對于數據量不太大、執(zhí)行效率要求不太高的數據,可以自行組織成標簽的形式,在程序中使用,也可以存放在文本文件中。相應的讀取寫入操作是比較方便的。讀者可以對Dom操作涉及的類和成員做進一步封裝,簡化相應操作。
相關文章
利用ASP.NET MVC和Bootstrap快速搭建個人博客之后臺dataTable數據列表
jQuery dataTables 插件是一個優(yōu)秀的表格插件,應用非常廣泛,本文給大家介紹利用ASP.NET MVC和Bootstrap快速搭建個人博客之后臺dataTable數據列表,非常不錯,具有參考借鑒價值,感興趣的朋友一起看下吧2016-07-07利用docker-compose搭建AspNetCore開發(fā)環(huán)境
這篇文章主要為大家詳細介紹了利用docker-compose搭建AspNetCore開發(fā)環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07AntDesign Pro + .NET Core 實現基于JWT的登錄認證功能
這篇文章主要介紹了AntDesign Pro + .NET Core 實現基于JWT的登錄認證功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03GridView中動態(tài)設置CommandField是否可用或可見的小例子
GridView中動態(tài)設置CommandField是否可用或可見的小例子,需要的朋友可以參考一下2013-05-05ASP.NET?Core在WebApi項目中使用Cookie
這篇文章介紹了ASP.NET?Core在WebApi項目中使用Cookie的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03ASP.NET Core 2.0 本地文件操作問題及解決方案
這篇文章主要介紹了ASP.NET Core 2.0 本地文件操作問題及解決方案,需要的朋友可以參考下2017-10-10