文章詳情頁(yè)
XML文檔搜索使用小結(jié)
瀏覽:234日期:2022-06-03 16:29:51
大家在.NET中處理XML文檔的時(shí)候,經(jīng)常會(huì)需要找到文檔中的某個(gè)節(jié)點(diǎn)的數(shù)據(jù)。要找到某個(gè)節(jié)點(diǎn),有許多種方法,在這里我就把幾種常用的方法給大家總結(jié)一下。
首先,我們要做的是要把一個(gè)XML文檔裝入到一個(gè)XmlDocument對(duì)象中去。
先引用幾個(gè)名字空間:
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
這幾個(gè)名字空間大家根據(jù)名字就知道它的意思了,我就不在這兒多說(shuō)了。然后就是裝入XML文件的代碼,方法如下:
String xmlfile="c:/member.xml"; //其中的xmlfile是你要載入的XML文件的路徑。
XmlDocument myDoc = new XmlDocument(); //定義一個(gè)XmlDocument對(duì)象。
myDoc.Load(xmlfile);
這樣,我們就有一個(gè)叫myDoc的XML文檔。我們現(xiàn)在就來(lái)找這個(gè)文檔中的一些節(jié)點(diǎn)。我們先來(lái)看這個(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ù),如果層次很多的話,做起來(lái)就會(huì)很費(fèi)勁,也容易出錯(cuò)。幸好.NET給我們提供了另外一個(gè)方法SelectSingleNode和SelectNodes方法可以讓我們直接找到所要的數(shù)據(jù)。比如,我們要找姓名為“Tim”的用戶(hù)的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="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}">
<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>
我們?cè)赼sp.net中有兩個(gè)變量,我們需要XSL文件在Transform XML文件的時(shí)候采用這兩個(gè)變量。我們?cè)撊绾稳プ瞿兀?
我所采取的方法是先把XSL文件作為XML Document裝載進(jìn)來(lái),在使用之前,我們找到需要修改的節(jié)點(diǎn),用我們的變量對(duì)其進(jìn)行修改。這個(gè)時(shí)候我們查找這個(gè)節(jié)點(diǎn)的時(shí)候需要做些變動(dòng),代碼如下:
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 = 你所需要輸給的變量
也就是說(shuō)對(duì)于類(lèi)似<xsl:attribute name="src">../FTP_Magazine/FTP_Issue/<xsl:value-of select="@url"/></xsl:attribute>這樣的節(jié)點(diǎn),在我們查找以前,我們需要定義一個(gè)XmlNamespaceManager,用它我們就可以找到我們所需要的節(jié)點(diǎn)。
首先,我們要做的是要把一個(gè)XML文檔裝入到一個(gè)XmlDocument對(duì)象中去。
先引用幾個(gè)名字空間:
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
這幾個(gè)名字空間大家根據(jù)名字就知道它的意思了,我就不在這兒多說(shuō)了。然后就是裝入XML文件的代碼,方法如下:
String xmlfile="c:/member.xml"; //其中的xmlfile是你要載入的XML文件的路徑。
XmlDocument myDoc = new XmlDocument(); //定義一個(gè)XmlDocument對(duì)象。
myDoc.Load(xmlfile);
這樣,我們就有一個(gè)叫myDoc的XML文檔。我們現(xiàn)在就來(lái)找這個(gè)文檔中的一些節(jié)點(diǎn)。我們先來(lái)看這個(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ù),如果層次很多的話,做起來(lái)就會(huì)很費(fèi)勁,也容易出錯(cuò)。幸好.NET給我們提供了另外一個(gè)方法SelectSingleNode和SelectNodes方法可以讓我們直接找到所要的數(shù)據(jù)。比如,我們要找姓名為“Tim”的用戶(hù)的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="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}">
<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>
我們?cè)赼sp.net中有兩個(gè)變量,我們需要XSL文件在Transform XML文件的時(shí)候采用這兩個(gè)變量。我們?cè)撊绾稳プ瞿兀?
我所采取的方法是先把XSL文件作為XML Document裝載進(jìn)來(lái),在使用之前,我們找到需要修改的節(jié)點(diǎn),用我們的變量對(duì)其進(jìn)行修改。這個(gè)時(shí)候我們查找這個(gè)節(jié)點(diǎn)的時(shí)候需要做些變動(dòng),代碼如下:
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 = 你所需要輸給的變量
也就是說(shuō)對(duì)于類(lèi)似<xsl:attribute name="src">../FTP_Magazine/FTP_Issue/<xsl:value-of select="@url"/></xsl:attribute>這樣的節(jié)點(diǎn),在我們查找以前,我們需要定義一個(gè)XmlNamespaceManager,用它我們就可以找到我們所需要的節(jié)點(diǎn)。
標(biāo)簽:
XML/RSS
相關(guān)文章:
1. js實(shí)現(xiàn)跳一跳小游戲2. JVM之class文件結(jié)構(gòu)3. js實(shí)現(xiàn)貪吃蛇小游戲(加墻)4. Python selenium模擬網(wǎng)頁(yè)點(diǎn)擊爬蟲(chóng)交管12123違章數(shù)據(jù)5. CSS linear-gradient屬性案例詳解6. Ajax報(bào)錯(cuò)400的參考解決辦法7. asp.net core 認(rèn)證和授權(quán)實(shí)例詳解8. 詳解IE6中的position:fixed問(wèn)題與隨滾動(dòng)條滾動(dòng)的效果9. JSP實(shí)現(xiàn)百萬(wàn)富翁猜數(shù)字游戲10. Python中Anaconda3 安裝gdal庫(kù)的方法
排行榜
