Parse an XML file

I'm trying to parse an XML file, I need to be able to pass a single parameter to a batch file "DEV2_BUSINESSAPPS_URL", if found I want the "https://energy.epipelines.com/businessapps/welcome.html" returned. Unfortunately it has to be a batch file.

Here is my XML file:
<Environment>
		<Variable>
			<Name>DEV2_BUSINESSAPPS_URL</Name>
			<Value><![CDATA[https://energy.epipelines.com/businessapps/welcome.html]]></Value>
		</Variable>
		<Variable>
			<Name>DEV3_BUSINESSAPPS_URL</Name>
			<Value><![CDATA[https://energy.epipelines.com/businessapps/welcome.html]]></Value>
		</Variable>
		<Variable>
			<Name>QA1_BUSINESSAPPS_URL</Name>
			<Value><![CDATA[https://qa1comapps.elm.com/businessapps]]></Value>
		</Variable>
		<Variable>
			<Name>Firefox</Name>
			<Value>Firefox.exe</Value>
		</Variable>
</Environment>

Open in new window

Jeff MeliesAsked:
Who is Participating?
 
shalomcConnect With a Mentor CTOCommented:
In any scenario you will need an XML parser.
You could write code in your favourite language and run it in batch. Alternatively create a XSLT or Xquery and use an external tool like Saxon to run it.  

Here is an example in python. Python has executables on all platforms.
 
import  xml.etree.ElementTree as  xml

# you should pass is as a parameter
lookup='QA1_BUSINESSAPPS_URL'

# assuming the xml file is called env.xml
e = xml.parse('env.xml').getroot()

# the naive way, but it works
for variable in e.findall("Variable"):
	name=variable.find("Name").text
	value=variable.find("Value").text
	if name==lookup:
		print name, value

# use xpath to search		
for variable in e.findall("./*[Name='%s']" % (lookup) ):
	name=variable.find("Name").text
	value=variable.find("Value").text
	print name, value

Open in new window

1
 
ste5anSenior DeveloperCommented:
A batch (file) is a collection of directives for an interpreter. What interpreter do you have in mind? bash, csh, zsh, 4nt, cmd, ps?
0
 
shalomcCTOCommented:
No further input from author, but it is a valid solution.
0
All Courses

From novice to tech pro — start learning today.