如何从批处理文件中获取xml的属性值以创建运行文件的条件
问题描述:
如何使用批处理文件从xml文件(build.xml)中获取属性值并设置条件以确定运行xml文件或不?如何从批处理文件中获取xml的属性值以创建运行文件的条件
我想从这个build.xml抓住以下值:
<property name="appbox1URL" value="http://10.111.111.111"/>
<property name="appbox2URL" value="http://10.222.222.222"/>
<property name="domainName" value="xxxG"/>
在我的批处理文件,我想用这些值来确定我们是否可以对运行构建文件的调用。还有一组值也被接受,以使条件成立,一个用于xxxG,另一个用于Stage。
Psudeo在批处理文件
If appbox1URL = "http://10.111.111.111" and appbox2URL = "http://10.222.222.222" and domainName = "xxxG"
OR
If appbox1URL = "http://10.111.111.000" and appbox2URL = "http://10.222.222.000" and domainName = "Stage"
THEN
call ant -buildfile "D:\xxx\Trunk\build.xml"
这是怎么想的批处理文件编码?
directory of build.xml - "D:\xxx\Trunk\build.xml"
directory of batchfile.bat - "D:\xxx\Trunk\Batch\batchfile.bat"
答
检查xpath.bat
(它应该是在同一个目录下面的脚本):
:: Set relative path here if needed
set "xmlFile=D:\xxx\Trunk\build.xml"
for /f "usebackq delims=* tokens=" %%a in (`xpath.bat "%xmlFile%" "//property[@name='appbox1URL']/@value" `) do set "appbox1URL=%%a"
for /f "usebackq delims=* tokens=" %%a in (`xpath.bat t.xml "//property[@name='appbox2URL']/@value" `) do set "appbox2URL=%%a"
for /f "usebackq delims=* tokens=" %%a in (`xpath.bat t.xml "//property[@name='domainName']/@value" `) do set "domainName=%%a"
if /i "%appbox1URL%" equ "http://10.222.222.222" if /i "%appbox2URL%" equ "http://10.222.222.000" if /i "%domainName%" equ "xxxG" (
call ant -buildfile "D:\xxx\Trunk\build.xml"
)
if /i "%appbox1URL%" equ "http://10.222.222.222" if /i "%appbox2URL%" equ "http://10.222.222.000" if /i "%domainName%" equ "OtherEnvironment" (
call ant -buildfile "D:\xxx\Trunk\build.xml"
)
考虑XPROC或xmlsh或蚂蚁。如果您为此使用通用shell脚本,则最终会多次解析XML文件 - 甚至更糟糕的是,会多次加载Java VM。或者,将控制逻辑放在XSLT中。 –