vbscript and going through xml documents

Hello,

I have an xml document that I would like to step through part of it and then search the rest of the document.
Overall layout is:
<profile>
  <network_drives>
    <network drive id="0" drive_letter="z:" drive_path="\\servername\share">
<network drive id="1" drive_letter="z:" drive_path="\\servername\share">
     there are a few more network drive elements exactly the same but different mappings
     </network_drives>
    <recent_documents>
     <recent_document id="2" document_name="blah" document_path="c:\desktop\folder1">
        <recent_document id="3" document_name="blah2.doc" document_path="c:\desktop\folder1">
      there are many recent documents if it matters all the id #'s are unique starting from 0 in network drives
     </recent_documents>
</profile>

Since there are few network drives I was trying to use
 set node = xmlDoc.selectSingleNode("\\network_drives\network_drive")
 but I got stuck because I did not know how to differentiate between the nodes within <network_drives> because they are all named network_drive but have different attributes. Also the command line spit out object required : 'node'

For the recent documents I basically want to do the same thing but I figure a loop would be better because there are far more entries. All I really care about is analyzing the path in the document and checking it against a variable.

Can anyone guide me in the correct way of using select single node and / or a loop to go through my xml document and get me the information i need?

Thanks in advance,
barry

barryk2Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
rdcproConnect With a Mentor Commented:
Oops.  I copied your code, and modified it to show the predicate, but didn't notice the backslashes.  They need to be "/" not "\"

Regards,
Mike Sharp
0
 
rdcproCommented:
Well, you can use selectSingleNode on any node, so if you find a particular node you're interested in, you can use it for the basis of subsequent searches.  To refine the XPath for a particular network_drive node, use a predicate:

set node = xmlDoc.selectSingleNode("\\network_drives\network_drive[@drive_letter = 'z']")

or even drive_path="\\servername\share"

set node = xmlDoc.selectSingleNode("\\network_drives\network_drive[contains(@drive_path, 'sharedFolderName')]")

to use a variable in it:

folderName = "myFolder"

set node = xmlDoc.selectSingleNode("\\network_drives\network_drive[contains(@drive_path, '" & folderName & "')]")

Regards,
Mike Sharp
0
 
barryk2Author Commented:
when i past your top code I get an error:

msxml4.dll : Unexpected character in query stirng

-->\<--\network_drives\netowrk_drive[@drive_letter = 'z' ]

also to verify node got set could i just print it like this: WScript.Echo node.text?
0
 
rdcproCommented:
By the way, if you need to do something with a number of nodes, and they're all identified by the same XPath expression, you can use selectNodes() which returns a nodelist you can iterate over.

Regards,
Mike Sharp
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.