我正在尝试通过批处理脚本从XMl文件中打印一个值。例如,我的xml文件如下所示
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int><int name="QTime">0</int>
</lst>
<lst name="initArgs">
<lst name="defaults"><str name="config">data-config.xml</str>
</lst>
</lst>
<str name="command">status</str>
<str name="status">idle</str>
<str name="importResponse"/>
<lst name="statusMessages">
<str name="Total Requests made to DataSource">1</str>
<str name="Total Rows Fetched">19</str><str name="Total Documents Skipped">0</str>
</response>
如何读取此xml文件并通过批处理脚本打印“Total Rows Fetched = 19”。感谢。
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q34925347.txt"
FOR /f "usebackqtokens=1-4delims=<=>" %%a IN ("%filename1%") DO (
IF "%%~b"=="str name" IF "%%~c"=="Total Rows Fetched" ECHO %%~c=%%d
IF "%%~a"=="str name" IF "%%~b"=="Total Rows Fetched" ECHO %%~b=%%c
)
GOTO :EOF
您需要更改sourcedir
的设置以适合您的具体情况。
我使用了一个名为q34925347.txt
的文件,其中包含我的测试数据。
使用&#34;令牌&#34;简单地划分线路。功能,在<
,=
和>
上分隔。
如果令牌匹配,则重建该行。
请注意,发布后,前导空格将分配到%%a
,以便调用第一个if
行。
如果生成的文件没有前导空格,则赋值将移位1,因为空格不再存在,因此不会被解释为标记。然后第二条if
行变为活动状态。
两条if
行都不会影响操作,除非你有一个非常棘手的源文件。