熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

XML文檔搜索使用小結

2013-11-15 12:53:28  來源: ASP編程 

  ///< summary>
  ///< author>飛鷹< /author>
  ///< description>本文介紹在NET中查找XML節點的方法< /desciption>
  ///< copyright>ASP酷技術資訊網()< /copyright>
  ///< /summary>

  大家在NET中處理XML文檔的時候經常會需要找到文檔中的某個節點的數據要找到某個節點有許多種方法在這裡我就把幾種常用的方法給大家總結一下

  首先我們要做的是要把一個XML文檔裝入到一個XmlDocument對象中去

  先引用幾個名字空間:

  using SystemXml;
  using SystemXmlXsl;
  using SystemXmlXPath;

  這幾個名字空間大家根據名字就知道它的意思了我就不在這兒多說了然後就是裝入XML文件的代碼方法如下

  String xmlfile=c:/memberxml; //其中的xmlfile是你要載入的XML文件的路徑
  XmlDocument myDoc = new XmlDocument(); //定義一個XmlDocument對象
  myDocLoad(xmlfile);

  這樣我們就有一個叫myDoc的XML文檔我們現在就來找這個文檔中的一些節點我們先來看這個XML文件的內容

  < ?xml version= encoding=UTF?>
  < members>
  < member>
  < name>Tim
  < hobby>reading
  < homepage>
  < /member>
  < member>
  < name>Sandy
  < hobby>learning
  < /member>
  < member>
  < name>Shally
  < hobby>tranlating
  < /member>
  < member>
  < name>Christine
  < hobby>working
  < /member>
  < /members>

  我們現在可以用下面的方法找到name為tim的節點:

  myDocChildNodesItem()ChildNodesItem()FirstChildInnerText

  這個方法要求我們一層層向內找我們需要的數據如果層次很多的話做起來就會很費勁也容易出錯幸好NET給我們提供了另外一個方法SelectSingleNode和SelectNodes方法可以讓我們直接找到所要的數據比如我們要找姓名為Tim的用戶的hobby我們可以用下面的方法

  myDocSelectSingleNode (//member[name=Tim])ChildNodesItem()InnerText

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

  在XML中尋找某個子節點大家都知道怎麼做了我們現在在一個特殊的XML文件XSL文件中去找一個子節點這個應該怎麼實現呢?

  假設我現在有一個這樣的XSL文件

  < ?xml version= encoding=gb?>
  < xsl:stylesheet version= xmlns:xsl= xmlns:fo=>
  < xsl:preservespace elements=codes/>
  < xsl:template match=/>
  < xsl:applytemplates/>
  < /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:applytemplates/>
  < /center>
  < /td>
  < /tr>
  < /table>
  < /xsl:template>

  < /xsl:stylesheet>

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

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

  XmlNamespaceManager nsmanager = new XmlNamespaceManager(xslDocNameTable);
  nsmanagerAddNamespace(xsl );
  xslDocSelectSingleNode(//xsl:attribute[@name=src] nsmanager)InnerXml = 你所需要輸給的變量

  也就是說對於類似/FTP_Magazine/FTP_Issue/這樣的節點在我們查找以前我們需要定義一個XmlNamespaceManager用它我們就可以找到我們所需要的節點

  作者飛鷹/


From:http://tw.wingwit.com/Article/program/ASP/201311/21822.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.