記錄一下C#中SelectSingleNode方法的使用
這裡有兩個XML,一個是以屬性來描述,一個是以結點來描述.對於這兩個的操作也不相同
一
<Ad>
<adlist name="廣告1" pic="UpFile/1.jpg" url="http://www.sohu.com" rank="1" />
<adlist name="廣告2" pic="UpFile/2.jpg" url="http://www.163.com" rank="2" />
<adlist name="廣告3" pic="UpFile/2.jpg" url="http://www.163.com" rank="3" />
</Ad>
二
<Ad>
<adlist>
<ad_name>廣告1</ad_name>
<ad_pic>UpFile/1.jpg</ad_pic>
<ad_url>http://www.sohu.com</ad_url>
<ad_qz>2</ad_qz>
</adlist>
<adlist>
<ad_name>廣告2</ad_name>
<ad_pic>UpFile/2.jpg</ad_pic>
<ad_url>http://www.163.com</ad_url>
<ad_qz>1</ad_qz>
</adlist>
</Ad>
對於後台的綁定都是一樣,都綁定到adlist
XmlDataSource xmlSource = new XmlDataSource();
xmlSource.XPath = "Ad/adlist";
在頁面上,我使用Repeater來顯示
對於第一種,使用Eval綁定表達式 <%# Eval("name") %> name是adlist 的屬性
對於第二種,使用XPath數據綁定表達式 <%# XPath("ad_name")%> ad_name是adlist下的子結點
修改:
對第一種XML,通過屬性名稱來查找結點,然後將結點轉換成XmlElement,對屬性進行設置.xmlDoc是XmlDocument的實例
XmlNode xFind = xmlDoc.SelectSingleNode("Ad/adlist[@name='" + sName + "']");
XmlElement element = (XmlElement)xFind;
element.SetAttribute("屬性名", "修改值");
修改完後,要進行保存,不然,值只是保存在內存中,並未寫入文件中.xmlDoc.Save(路徑);
對第二種XML,我使用XPathNavigator來操作.xmlDoc同上
XmlNode xFind = xmlDoc.SelectSingleNode("Ad/adlist[ad_name='" + sName + "']");
XPathNavigator nav = xFind.CreateNavigator();
XPathNodeIterator ite = nav.Select("ad_name");//查找www.2cto.com
if (ite != null && ite.MoveNext())//不為NULL並移到下一結點,下一個節點是文本節點
{
ite.Current.SetValue("廣告3");//設置當前結點的值
}
最後一步,xmlDoc.Save(路徑);
作者:zhuzhu837_1