2017-10-18 96 views
0

如何使用批处理文件从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" 
+0

考虑XPROC或xmlsh或蚂蚁。如果您为此使用通用shell脚本,则最终会多次解析XML文件 - 甚至更糟糕的是,会多次加载Java VM。或者,将控制逻辑放在XSLT中。 –

回答

0

检查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" 
)