程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> 利用Dom操作字符串一例

利用Dom操作字符串一例

編輯:ASP.NET基礎
有時對字符串的處理可以利用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(@"//b4").InnerText = "修改後的b4";
Response.Write(Server.HtmlEncode(xmlDoc.DocumentElement.InnerXml));

上面第二句是關鍵,由於源字符串可能缺少唯一的根元素,如本例,所以在外層包裹一對標簽就可以將其轉化為合法的xml文檔,然後修改後的源文本用xmlDoc.DocumentElement.InnerXml取出。當然方法1僅限於源文本近似於xml且比較規范的場合。

方法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(@"//b4").InnerHtml = "修改後的b4";
Response.Write(Server.HtmlEncode(hxmlDoc.DocumentNode.InnerHtml));

無須用標簽包裹,因為即使沒有唯一根元素,HtmlAgilityPack仍能正常解析。

以上兩種方法啟示我們對於數據量不太大、執行效率要求不太高的數據,可以自行組織成標簽的形式,在程序中使用,也可以存放在文本文件中。相應的讀取寫入操作是比較方便的。讀者可以對Dom操作涉及的類和成員做進一步封裝,簡化相應操作。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved