Querying XML Files Using XPATH in ASP.NET

Sometimes we need to access certain parts of an XML file; this concept can be done using a special language known as XPath. This article basically will help you to know about XPath and how to query an XML file so that we can read only certain parts of it.

Before proceding with the design part, add a new XML file to your ASP.Net web application and add the following contents to it.

<? xml version = "1.0" ?>
< catalog >
          <
cd category = "Pop" >
                   < title > Empire Burlesque</title >
                   < artist > Bob Dylan</artist >
                   < country > USA</country >
                   < company > Columbia</company >
                   < price > 10.90</price >
                   < year > 1985</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > Hide your heart</title >
                   < artist > Bonnie Tyler</artist >
                   < country > UK</country >
                   < company > CBS Records</company >
                   < price > 9.90</price >
                   < year > 1988</year >
          </ cd >
          <
cd category = "Rock" >
                   < title > Greatest Hits</title >
                   < artist > Dolly Parton</artist >
                   < country > USA</country >
                   < company > RCA</company >
                   < price > 9.90</price >
                   < year > 1982</year >
          </ cd >
          <
cd category = "Rock" >
                   < title > Still got the blues</title >
                   < artist > Gary Moore</artist >
                   < country > UK</country >
                   < company > Virgin records</company >
                   < price > 10.20</price >
                   < year > 1990</year >
          </ cd >
          <
cd category = "Classic" >
                   < title > Eros</title >
                   < artist > Eros Ramazzotti</artist >
                   < country > EU</country >
                   < company > BMG</company >
                   < price > 9.90</price >
                   < year > 1997</year >
          </ cd >
          <
cd category = "Rock" >
                   < title > One night only</title >
                   < artist > Bee Gees</artist >
                   < country > UK</country >
                   < company > Polydor</company >
                   < price > 10.90</price >
                   < year > 1998</year >
          </ cd >
          <
cd category = "Classic" >
                   < title > Sylvias Mother</title >
                   < artist > Dr.Hook</artist >
                   < country > UK</country >
                   < company > CBS</company >
                   < price > 8.10</price >
                   < year > 1973</year >
          </ cd >
          <
cd category = "DJ" >
                   < title > Maggie May</title >
                   < artist > Rod Stewart</artist >
                   < country > UK</country >
                   < company > Pickwick</company >
                   < price > 8.50</price >
                   < year > 1990</year >
          </ cd >
          <
cd category = "DJ" >
                   < title > Romanza</title >
                   < artist > Andrea Bocelli</artist >
                   < country > EU</country >
                   < company > Polydor</company >
                   < price > 10.80</price >
                   < year > 1996</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > When a man loves a woman</title >
                   < artist > Percy Sledge</artist >
                   < country > USA</country >
                   < company > Atlantic</company >
                   < price > 8.70</price >
                   < year > 1987</year >
          </ cd >
          <
cd category = "Classic" >
                   < title > Black angel</title >
                   < artist > Savage Rose</artist >
                   < country > EU</country >
                   < company > Mega</company >
                   < price > 10.90</price >
                   < year > 1995</year >
          </ cd >
          <
cd category = "DJ" >
                   < title > 1999 Grammy Nominees</title >
                   < artist > Many</artist >
                   < country > USA</country >
                   < company > Grammy</company >
                   < price > 10.20</price >
                   < year > 1999</year >
          </ cd >
          <
cd category = "Rap" >
                   < title > For the good times</title >
                   < artist > Kenny Rogers</artist >
                   < country > UK</country >
                   < company > Mucik Master</company >
                   < price > 8.70</price >
                   < year > 1995</year >
          </ cd >
          <
cd category = "Rap" >
                   < title > Big Willie style</title >
                   < artist > Will Smith</artist >
                   < country > USA</country >
                   < company > Columbia</company >
                   < price > 9.90</price >
                   < year > 1997</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > Tupelo Honey</title >
                   < artist > Van Morrison</artist >
                   < country > UK</country >
                   < company > Polydor</company >
                   < price > 8.20</price >
                   < year > 1971</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > Soulsville</title >
                   < artist > Jorn Hoel</artist >
                   < country > Norway</country >
                   < company > WEA</company >
                   < price > 7.90</price >
                   < year > 1996</year >
          </ cd >
          <
cd category = "Rock" >
                   < title > The very best of</title >
                   < artist > Cat Stevens</artist >
                   < country > UK</country >
                   < company > Island</company >
                   < price > 8.90</price >
                   < year > 1990</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > Stop</title >
                   < artist > Sam Brown</artist >
                   < country > UK</country >
                   < company > A and M</company >
                   < price > 8.90</price >
                   < year > 1988</year >
          </ cd >
          <
cd category = "DJ" >
                   < title > Bridge of Spies</title >
                   < artist > T`Pau</artist >
                   < country > UK</country >
                   < company > Siren</company >
                   < price > 7.90</price >
                   < year > 1987</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > Private Dancer</title >
                   < artist > Tina Turner</artist >
                   < country > UK</country >
                   < company > Capitol</company >
                   < price > 8.90</price >
                   < year > 1983</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > Midt om natten</title >
                   < artist > Kim Larsen</artist >
                   < country > EU</country >
                   < company > Medley</company >
                   < price > 7.80</price >
                   < year > 1983</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > Pavarotti Gala Concert</title >
                   < artist > Luciano Pavarotti</artist >
                   < country > UK</country >
                   < company > DECCA</company >
                   < price > 9.90</price >
                   < year > 1991</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > The dock of the bay</title >
                   < artist > Otis Redding</artist >
                   < country > USA</country >
                   < company > Atlantic</company >
                   < price > 7.90</price >
                   < year > 1987</year >
          </ cd >
          <
cd category = "Pop" >
                   < title > Picture book</title >
                   < artist > Simply Red</artist >
                   < country > EU</country >
                   < company > Elektra</company >
                   < price > 7.20</price >
                   < year > 1985</year >
          </ cd >
          <
cd category = "Remix" >
                   < title > Red</title >
                   < artist > The Communards</artist >
                   < country > UK</country >
                   < company > London</company >
                   < price > 7.80</price >
                   < year > 1987</year >
          </ cd >
          <
cd category = "Remix" >
                   < title > Unchain my heart</title >
                   < artist > Joe Cocker</artist >
                   < country > USA</country >
                   < company > EMI</company >
                   < price > 8.20</price >
                   < year > 1987</year >
          </ cd >
</
catalog >

I've created the following design for doing the application.



In the Button click event the RunQuery() method should be called to execute the query passed in the textbox which is an HTML input text box. The following is the source code for that.

<% @ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title
>
<script language="javascript" type="text/javascript">
var xmlDoc;
    try
    {
//I've added the xml file in mydata folder so to load the file we need //to use the following
command.
        xmlDoc=new ActiveXObject("Msxml2.DOMDocument.6.0");
        xmlDoc.async=false;
        xmlDoc.load("./mydata/Catalog.xml");
//If you have directly added the xml file to your application then //type the following command
//xmlDoc.load("Catalog.xml")
    }
    catch(e)
    {
        alert(e);
    }
    function RunQuery()
   {
         var s="";
         var i;
        var query=document.f1.t1.value;
        alert(query);
        var nodes=xmlDoc.selectNodes(query);
        s+="<br/><b>"+nodes[0].nodeName+"</b><br/><hr/>";

        for(i=0;i<nodes.length;i++)
        {
            s+="<Li>"+nodes[i].childNodes[0].nodeValue+"<Li><br/>";
        }
        document.getElementById("msg").innerHTML=s;
   } 
</script>
</
head>
<
body>
    <form id="f1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Names="Times New Roman"
            Font-Size="X-Large" Text="Enter Your Query : "></asp:Label>&nbsp;
        <input id="t1" style="width: 291px" type="text" /><br />
        <br />
        <input id="Button1" type="button" value="Run" onClick="RunQuery()" /></div>
        <div id="msg">
        <div>
    </form
>
</body>
</
html>

Now just run the application and type the query in textbox.

To search an element from the XML file type the following command:

Syntax: - //elementname

E.g.: - //title
E.g.: - //country





To search by category which is an Attribute of CD element type the following command in the textbox:-
//@category

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值