明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

XML文檔搜索使用小結2

[摘要]這個方法要求我們一層層向內(nèi)找我們需要的數(shù)據(jù),如果層次很多的話,做起來就會很費勁,也容易出錯。幸好.NET給我們提供了另外一個方法SelectSingleNode和SelectNodes方法可以讓我們直接找到所要的數(shù)據(jù)。比如,我們要找姓名為“Tim”的用戶的hobby,我們可以用下面的方法:   m...
這個方法要求我們一層層向內(nèi)找我們需要的數(shù)據(jù),如果層次很多的話,做起來就會很費勁,也容易出錯。幸好.NET給我們提供了另外一個方法SelectSingleNode和SelectNodes方法可以讓我們直接找到所要的數(shù)據(jù)。比如,我們要找姓名為“Tim”的用戶的hobby,我們可以用下面的方法:

  myDoc.SelectSingleNode ("http://member[name='Tim']").ChildNodes.Item(1).InnerText

  其中//代表里面任意層的子節(jié)點。這樣我們就可以很快的找到所要的東西。SelectSingleNode是找到一個單一的節(jié)點,SelectNodes可以找到許多節(jié)點。

  在XML中尋找某個子節(jié)點,大家都知道怎么做了,我們現(xiàn)在在一個特殊的XML文件---XSL文件中去找一個子節(jié)點,這個應該怎么實現(xiàn)呢?

  假設我現(xiàn)在有一個這樣的XSL文件:

  < ?xml version="1.0" encoding="gb2312"?>
  < xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
  < xsl:preserve-space elements="codes"/>
  < xsl:template match="/">
  < xsl:apply-templates/>
  < /xsl:template>

  < xsl:template match="image">
  < table align="{@location}">
  < tr>
  < td>
  < img align="{@location}" alt="{text()}">
  < xsl:attribute name="src">../FTP_Magazine/FTP_Issue/
  < /img>
  < /td>
  < /tr>
  < tr>
  < td>
  < center>
  < xsl:apply-templates/>
  < /center>
  < /td>
  < /tr>
  < /table>
  < /xsl:template>

  < /xsl:stylesheet>

  我們在asp.net中有兩個變量,我們需要XSL文件在Transform XML文件的時候采用這兩個變量。我們該如何去做呢?

  我所采取的方法是先把XSL文件作為XML Document裝載進來,在使用之前,我們找到需要修改的節(jié)點,用我們的變量對其進行修改。這個時候我們查找這個節(jié)點的時候需要做些變動,代碼如下:

  XmlNamespaceManager nsmanager = new XmlNamespaceManager(xslDoc.NameTable);
  nsmanager.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
  xslDoc.SelectSingleNode("http://xsl:attribute[@name='src']", nsmanager).InnerXml = 你所需要輸給的變量

  也就是說對于類似../FTP_Magazine/FTP_Issue/這樣的節(jié)點,在我們查找以前,我們需要定義一個XmlNamespaceManager,用它我們就可以找到我們所需要的節(jié)點。