Solved

Parsing XML Values with VbScript

Posted on 2011-09-30
5
488 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
  • 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 500 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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Welcome back!  My apologies for taking so long to write part two of this series; it's been a long time coming!  As I promised in Part 1, this article will focus on how to locate those elusive AD properties that you are searching for.  Why is this us…
Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

816 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

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now