Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 473
  • Last Modified:

XML VBScript Assistance?

I am trying to extract data from a file I have in an address application.

The format of the file is:

<?xml version="1.0" encoding="iso-8859-1"?>
<FullAddressListing>
<addressSetting value="Corporate">
    <streetAddress>123
Corp Way</streetAddress>
    <city>MyCity</city>
    <stateOrProvince>MyState</stateOrProvince>
    <zipOrPostalCode>123456</zipOrPostalCode>
    <country>US</country>
  </addressSetting>
<addressSetting value="Remote1">
    <streetAddress>123
Remote Way</streetAddress>
    <city>MyCity</city>
    <stateOrProvince>MyState</stateOrProvince>
    <zipOrPostalCode>78910</zipOrPostalCode>
    <country>US</country>
  </addressSetting>
</FullAddressListing>

I am trying to use VBScript to Extract each value so I can import it into system for badging (not relevant).

I have tried different XML code snippets from this site and many others but can't get the script to dump out what I need.

I would like to set each value (address, State, Zip) as a unique varible (i.e. strState=oNode.SelectSingleNode("stateOrProvince").text but nothing seems to work.

Any assistance is appreciated.
0
TexasPlowBoy
Asked:
TexasPlowBoy
2 Solutions
 
bondy666Commented:
You could do something a bit like this.

Const ForReading = 1

Set fso = CreateObject("Scripting.FileSystemObject")

Set XMLReader = fso.OpenTextFile("C:\Temp\Address.xml", ForReading)
Do While Not XMLReader.AtEndOfStream
ReadXML = XMLReader.ReadLine

If InStr(1,ReadXML,"city")>0 Then
	CITY = Replace(ReadXML,"<city>",vbNullString)
	CITY = Replace(CITY,"</city>",vbNullString)
End If

If InStr(1,ReadXML,"stateOrProvince")>0 Then
	State = Replace(ReadXML,"<stateOrProvince>",vbNullString)
	State = Replace(State,"</stateOrProvince>",vbNullString)
End If

If InStr(1,ReadXML,"country")>0 Then
	country = Replace(ReadXML,"<country>",vbNullString)
	country = Replace(country,"</country>",vbNullString)
End If

If InStr(1,ReadXML,"streetAddress")>0 Then
	Street = Replace(ReadXML,"<streetAddress>",vbNullString)
	Street = Replace(Street,"</streetAddress>",vbNullString)
End If

If InStr(1,ReadXML,"zipOrPostalCode")>0 Then
	Postcode = Replace(ReadXML,"<zipOrPostalCode>",vbNullString)
	Postcode = Replace(Postcode,"</zipOrPostalCode>",vbNullString)
End If

Loop

WScript.Echo Street & vbCrLf & City & vbCrLf & State & vbCrLf & Postcode & vbCrLf & Country

Open in new window

0
 
RobSampsonCommented:
Hi, this will list the node values in the XML, but it's not clear what you want to do with each value....

Regards,

Rob.
Const NODE_TEXT = 3
Set objXML = CreateObject("Microsoft.XMLDOM")
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
strXMLFile = Replace(WScript.ScriptFullName, WScript.ScriptName, "") & "test.xml"
If objXML.load(strXMLFile) Then
	DisplayNode objXML.childNodes, 0
Else
	MsgBox "Unable to load " & strXMLFile
End If

MsgBox "Finished."

Sub DisplayNode(ByRef Nodes, ByVal Indent)
	Dim xNode
	Indent = Indent + 2

	For Each xNode In Nodes
		If xNode.nodeType = NODE_TEXT Then
			WScript.Echo Space(Indent) & xNode.parentNode.nodeName & ": " & xNode.nodeValue
		End If

		If xNode.hasChildNodes Then
			DisplayNode xNode.childNodes, Indent
		End If
	Next
End Sub

Open in new window

0
 
Glen KnightCommented:
This question has been classified as abandoned and is being closed as part of the Cleanup Program. See my comment at the end of the question for more details.
0

Featured Post

Simplify Active Directory Administration

Administration of Active Directory does not have to be hard.  Too often what should be a simple task is made more difficult than it needs to be.The solution?  Hyena from SystemTools Software.  With ease-of-use as well as powerful importing and bulk updating capabilities.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now