Search a string inside an xml node

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • lejason@gmail.com

    Search a string inside an xml node

    Hello, I am looking for a way to do a string search inside an xml.
    Basically, I work for a company that wants to export an XML file from
    and excel sheet and then have that data be presented on the web. Part
    of the presentation is that they want to be able to "search" for their
    favorite dealers. So, this will be a string search.

    The difficulty is, we dont have .NET, we dont have a SQL server -- all
    I can use is ASP classic.

    So, I can read/parse the XML and I can search for static things like
    zip codes and products (products from a drop down list that dont
    change) using simple "if" statements however, when it comes to a
    string, unless the user enters it EXACTLY how its spelled an
    punctuated in the XML, it wont return the match (of course).

    I've read about a lot of functionality that .NET offers for string
    search, but I havent yet found anything for classic.

    The code I am going to post works and will eventually become the
    actual engine, but for now the variables are for people - name, color,
    number.

    So the million dollar question is, if I wanted to add another
    dimension to my array that had a string where I wanted to pick up on
    keywords - lets say one word in up to 230 characters, how on earth
    would I create a function to make it searchable (search inside of a
    string)

    thanks guys

    (here is the code)

    <%

    Dim xdoc
    Set xdoc=Server.Cre ateObject("Micr osoft.XMLDOM")
    xdoc.async=fals e
    xdoc.load("/newtext.xml")

    if xdoc.parseError .errorcode<>0 then
    response.write "there was obviously an error"
    else
    response.write "Things worked"
    end if

    dim theLength
    theLength = xdoc.SelectNode s("/test/person").length

    dim counter
    counter = 0

    dim theArray()
    ReDim theArray(theLen gth, 2)

    For Each elemPerson in xdoc.SelectNode s("/test/person")
    For Each elem in elemPerson.Sele ctNodes("*")
    theArray(counte r,0)= elemPerson.chil dNodes(0).text
    theArray(counte r,1)= elemPerson.chil dNodes(1).text
    theArray(counte r,2)= elemPerson.chil dNodes(2).text
    Next
    counter = counter + 1
    Next

    dim real
    real = theLength - 1

    dim rowcounter
    rowcounter = 1

    For i=0 to real

    dim personName
    personName = theArray(i, 0)
    dim personColor
    personColor = theArray(i, 1)
    dim personNumber
    personNumber = theArray(i, 2)


    dim search_name
    search_name = "Jason"
    dim search_color
    search_color = "blue"
    dim search_number
    search_number = "16"


    dim color
    color = " class='even'"

    if rowcounter MOD 2 <0 then
    color = " class='odd'"
    end if

    if (personName = search_name or personColor = search_color) then
    response.write "<tr" & color &">"
    response.write "<td>" & personName & "</td>"
    response.write "<td>" & personColor & "</td>"
    response.write "<td>" & personNumber & "</td>"
    response.write "<td>" & rowcounter & "</td>"
    response.write "</tr>"

    rowcounter = rowcounter + 1

    end if

    Next

    %>

  • Jon Paal [MSMD]

    #2
    Re: Search a string inside an xml node

    this may help






    <lejason@gmail. comwrote in message news:1174410728 .352117.201070@ l77g2000hsb.goo glegroups.com.. .
    Hello, I am looking for a way to do a string search inside an xml.
    Basically, I work for a company that wants to export an XML file from
    and excel sheet and then have that data be presented on the web. Part
    of the presentation is that they want to be able to "search" for their
    favorite dealers. So, this will be a string search.
    >
    The difficulty is, we dont have .NET, we dont have a SQL server -- all
    I can use is ASP classic.
    >
    So, I can read/parse the XML and I can search for static things like
    zip codes and products (products from a drop down list that dont
    change) using simple "if" statements however, when it comes to a
    string, unless the user enters it EXACTLY how its spelled an
    punctuated in the XML, it wont return the match (of course).
    >
    I've read about a lot of functionality that .NET offers for string
    search, but I havent yet found anything for classic.
    >
    The code I am going to post works and will eventually become the
    actual engine, but for now the variables are for people - name, color,
    number.
    >
    So the million dollar question is, if I wanted to add another
    dimension to my array that had a string where I wanted to pick up on
    keywords - lets say one word in up to 230 characters, how on earth
    would I create a function to make it searchable (search inside of a
    string)
    >
    thanks guys
    >
    (here is the code)
    >
    <%
    >
    Dim xdoc
    Set xdoc=Server.Cre ateObject("Micr osoft.XMLDOM")
    xdoc.async=fals e
    xdoc.load("/newtext.xml")
    >
    if xdoc.parseError .errorcode<>0 then
    response.write "there was obviously an error"
    else
    response.write "Things worked"
    end if
    >
    dim theLength
    theLength = xdoc.SelectNode s("/test/person").length
    >
    dim counter
    counter = 0
    >
    dim theArray()
    ReDim theArray(theLen gth, 2)
    >
    For Each elemPerson in xdoc.SelectNode s("/test/person")
    For Each elem in elemPerson.Sele ctNodes("*")
    theArray(counte r,0)= elemPerson.chil dNodes(0).text
    theArray(counte r,1)= elemPerson.chil dNodes(1).text
    theArray(counte r,2)= elemPerson.chil dNodes(2).text
    Next
    counter = counter + 1
    Next
    >
    dim real
    real = theLength - 1
    >
    dim rowcounter
    rowcounter = 1
    >
    For i=0 to real
    >
    dim personName
    personName = theArray(i, 0)
    dim personColor
    personColor = theArray(i, 1)
    dim personNumber
    personNumber = theArray(i, 2)
    >
    >
    dim search_name
    search_name = "Jason"
    dim search_color
    search_color = "blue"
    dim search_number
    search_number = "16"
    >
    >
    dim color
    color = " class='even'"
    >
    if rowcounter MOD 2 <0 then
    color = " class='odd'"
    end if
    >
    if (personName = search_name or personColor = search_color) then
    response.write "<tr" & color &">"
    response.write "<td>" & personName & "</td>"
    response.write "<td>" & personColor & "</td>"
    response.write "<td>" & personNumber & "</td>"
    response.write "<td>" & rowcounter & "</td>"
    response.write "</tr>"
    >
    rowcounter = rowcounter + 1
    >
    end if
    >
    Next
    >
    %>
    >

    Comment

    Working...