国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

XML文檔搜索使用小結(jié)

2019-11-18 19:42:22
字體:
供稿:網(wǎng)友
大家在.NET中處理xml文檔的時(shí)候,經(jīng)常會(huì)需要找到文檔中的某個(gè)節(jié)點(diǎn)的數(shù)據(jù)。要找到某個(gè)節(jié)點(diǎn),有許多種方法,在這里我就把幾種常用的方法給大家總結(jié)一下。
  
  首先,我們要做的是要把一個(gè)XML文檔裝入到一個(gè)XmlDocument對象中去。
  
  先引用幾個(gè)名字空間:
  
  using System.Xml;
  using System.Xml.Xsl;
  using System.Xml.XPath;
  
  這幾個(gè)名字空間大家根據(jù)名字就知道它的意思了,我就不在這兒多說了。然后就是裝入XML文件的代碼,方法如下:
  
  String xmlfile="c:/member.xml"; //其中的xmlfile是你要載入的XML文件的路徑。
  XmlDocument myDoc = new XmlDocument(); //定義一個(gè)XmlDocument對象。
  myDoc.Load(xmlfile);
  
  
  這樣,我們就有一個(gè)叫myDoc的XML文檔。我們現(xiàn)在就來找這個(gè)文檔中的一些節(jié)點(diǎn)。我們先來看這個(gè)XML文件的內(nèi)容。
  <?xml version="1.0" encoding="UTF-8"?>
  <members>
   <member>
   <name>Tim</name>
   <hobby>reading</hobby>
   <homepage>www.aspcool.com</homepage>
   </member>
   <member>
   <name>Sandy</name>
   <hobby>learning</hobby>
   </member>
   <member>
   <name>Shally</name>
   <hobby>tranlating</hobby>
   </member>
   <member>
   <name>Christine</name>
   <hobby>working</hobby>
   </member>
  </members>
  
  我們現(xiàn)在可以用下面的方法找到name為tim的節(jié)點(diǎn):
  myDoc.ChildNodes.Item(1).ChildNodes.Item(0).FirstChild.InnerText
  
  這個(gè)方法要求我們一層層向內(nèi)找我們需要的數(shù)據(jù),如果層次很多的話,做起來就會(huì)很費(fèi)勁,也容易出錯(cuò)。幸好.NET給我們提供了另外一個(gè)方法SelectSingleNode和SelectNodes方法可以讓我們直接找到所要的數(shù)據(jù)。比如,我們要找姓名為“Tim”的用戶的hobby,我們可以用下面的方法:
  myDoc.SelectSingleNode ("http://member[name='Tim']").ChildNodes.Item(1).InnerText
  
  其中//代表里面任意層的子節(jié)點(diǎn)。這樣我們就可以很快的找到所要的東西。SelectSingleNode是找到一個(gè)單一的節(jié)點(diǎn),SelectNodes可以找到許多節(jié)點(diǎn)。
  
  在XML中尋找某個(gè)子節(jié)點(diǎn),大家都知道怎么做了,我們現(xiàn)在在一個(gè)特殊的XML文件---XSL文件中去找一個(gè)子節(jié)點(diǎn),這個(gè)應(yīng)該怎么實(shí)現(xiàn)呢?
  
  假設(shè)我現(xiàn)在有一個(gè)這樣的XSL文件:
  <?xml version="1.0" encoding="gb2312"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="   <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/<xsl:value-of select="@url"/></xsl:attribute>
   </img>
   </td>
   </tr>
   <tr>
   <td>
   <center>
   <xsl:apply-templates/>
   </center>
   </td>
   </tr>
   </table>
   </xsl:template>
  
  </xsl:stylesheet>
  
  我們在asp.net中有兩個(gè)變量,我們需要XSL文件在Transform XML文件的時(shí)候采用這兩個(gè)變量。我們該如何去做呢?
  
  我所采取的方法是先把XSL文件作為XML Document裝載進(jìn)來,在使用之前,我們找到需要修改的節(jié)點(diǎn),用我們的變量對其進(jìn)行修改。這個(gè)時(shí)候我們查找這個(gè)節(jié)點(diǎn)的時(shí)候需要做些變動(dòng),代碼如下:
  
  XmlNamespaceManager nsmanager = new XmlNamespaceManager(xslDoc.NameTable);
  nsmanager.AddNamespace("xsl", "  xslDoc.SelectSingleNode("http://xsl:attribute[@name='src']", nsmanager).InnerXml = 你所需要輸給的變量
  
  也就是說對于類似<xsl:attribute name="src">../FTP_Magazine/FTP_Issue/<xsl:value-of select="@url"/></xsl:attribute>這樣的節(jié)點(diǎn),在我們查找以前,我們需要定義一個(gè)XmlNamespaceManager,用它我們就可以找到我們所需要的節(jié)點(diǎn)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 富顺县| 长兴县| 延长县| 苍山县| 鄂尔多斯市| 蒙阴县| 蕉岭县| 尖扎县| 无极县| 申扎县| 西林县| 内黄县| 宣汉县| 绥棱县| 类乌齐县| 新津县| 宁国市| 仁化县| 二连浩特市| 巢湖市| 泸定县| 通榆县| 怀集县| 凭祥市| 乌鲁木齐市| 炎陵县| 浑源县| 淮北市| 南郑县| 兰西县| 万山特区| 望奎县| 兴隆县| 九龙坡区| 铁力市| 侯马市| 元阳县| 突泉县| 平阴县| 灵璧县| 东港市|