[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Parsing XML Values with VbScript

Posted on 2011-09-30
5
Medium Priority
?
499 Views
Last Modified: 2012-05-12
I am trying to parse out an XML file using VbScript.  I have somewhat of a code but is not writing and it is throwing an error 'wrong number of arguments '  Please help, how to read the XML correctly to pull the text from the nodes.

Dim xmlDoc, FirstTag, SecondTag

Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.load("c:\Test\test.xml")

FirstTag = xmlDoc.getElementsByTagName("CageCode")
SecondTag = xmlDoc.getElementsByTagName("PartNumber")

Set objDialog = CreateObject("UserAccounts.CommonDialog")

sText = "C:\Test\Output.txt"

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oOut = oFSO.CreateTextFile(sText, True)


oOut.WriteLine  FirstTag
oOut.WriteLine  SecondTag


Set xmlDoc = Nothing

Thank you
0
Comment
Question by:drezner7
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 36892100
You've got a couple of issues. Firstly, getElementsByTagName returns an object, so you'll need a Set on lines 6 & 7. Secondly, WriteLine expects a string, but you are attempting to pass objects of type IXMLDOMNode. A modification to lines 17 & 18 is in order as well. Please see the following for my proposed changes.

Dim xmlDoc, FirstTag, SecondTag

Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.load("test.xml")

Set FirstTag = xmlDoc.getElementsByTagName("CageCode")
Set SecondTag = xmlDoc.getElementsByTagName("PartNumber")

Set objDialog = CreateObject("UserAccounts.CommonDialog")

sText = "Output.txt"

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oOut = oFSO.CreateTextFile(sText, True)


oOut.WriteLine  FirstTag(0).text
oOut.WriteLine  SecondTag(0).text


Set xmlDoc = Nothing

Open in new window


Please note: I'm only taking the first node (i.e. the 0 in lines 17 & 18) when printing. You can loop through the nodes in both FirstTag and SecondTag (they are of type IXMLDOMNodeList) if that is your requirement. The above is meant to be an example to get you headed in the right direction. To see how to loop, you can review here:  http://msdn.microsoft.com/en-us/library/ms765549.aspx
0
 

Author Comment

by:drezner7
ID: 36892451
It throws an error that in line 17: of the code  'object required: '[object]'
0
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 2000 total points
ID: 36892543
You may want to check for NULL before trying to use the values:

If Not FirstTag Is Nothing Then
    oOut.WriteLine  FirstTag(0).text
End If

If Not SecondTag Is Nothing Then
    oOut.WriteLine  SecondTag(0).text
End If

Open in new window

0
 

Author Closing Comment

by:drezner7
ID: 36892575
Thank you very much ... It works great. This just saved me 20 hours of work
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 36892595
NP. Glad to help  = )
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I met Paul Devereux (@pdevereux) today when I responded to his tweet asking “Anybody know how to automate adding files from disk to a folder in #outlook  ?”.  I replied back and told Paul that using automation, in this case scripting, to add files t…
This is pretty cool.  The purpose of this VB Script is to help you document where JAR (Java ARchive) files and specifically java class files are located so that you can address issues seen with a client or that you can speak intelligently with a dev…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
Suggested Courses

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question