如何<LOCATION></LOCATION>在XML文件的标记之间提取"US_NY"之类的STRING ?我尝试使用FINDSTR,但换行是有问题的.
<?xml version="1.0" encoding="utf-16"?>
<DEVICE>
<AGENT>
<VERSION>
2.0.0.2
</VERSION>
<CONNECTION>
<LOCATION>
US_NY
</LOCATION>
<SERVERIP>
127.0.0.1
</SERVERIP>
<TCPPORT>
5656
</TCPPORT>
<POLLINTERVAL>
5
</POLLINTERVAL>
</CONNECTION>
</AGENT>
</DEVICE>
Run Code Online (Sandbox Code Playgroud)
Nav*_*wat 15
您应该在批处理中使用XML.EXE来读取XML文件.有关更多详细信息,请访问http://xmlstar.sourceforge.net/
批处理文件:
@echo off
for /f %%i in ('XML.EXE sel -t -v "//LOCATION" CP.xml') do set var=%%i
echo LOCATION is %var%
Run Code Online (Sandbox Code Playgroud)
输出:
LOCATION is US_NY
Run Code Online (Sandbox Code Playgroud)
多一个
@echo off
setlocal enableextensions enabledelayedexpansion
set "xmlFile=%~1"
for /f "tokens=1,2 delims=:" %%n in ('findstr /n /i /c:"<LOCATION>" "%xmlFile%"') do (
for /f "tokens=*" %%l in ('type "%xmlFile%" ^| more +%%n') do set "location=%%l" & goto endLoop
)
:endLoop
echo %location%
Run Code Online (Sandbox Code Playgroud)
这是xpath.bat -small 脚本,它允许您在不使用外部二进制文件的情况下通过 xpath 表达式获取 xml 节点/属性值。
对于您的情况,它可以像这样使用:
call xpath.bat "location.xml" "//LOCATION"
Run Code Online (Sandbox Code Playgroud)
或将值分配给变量:
for /f "tokens=* delims=" %%a in ('xpath.bat "location.xml" "//LOCATION"') do (
set "location=%%a"
)
Run Code Online (Sandbox Code Playgroud)
纯批次溶液
@echo off
for /f "tokens=1 delims=:" %%L in ('findstr /n "<LOCATION>" some.xml') do (
set begin_line=%%L
)
for /f "tokens=1 delims=:" %%L in ('findstr /n "</LOCATION>" some.xml') do (
set /a end_line=%%L+1
)
echo showing lines between %end_line% and %begin_line%
break>"%temp%\empty"
for /f "delims=" %%l in ('fc "%temp%\empty" "some.xml" /lb %end_line% /t ^|more +4 ^| findstr /B /E /V "*****" ^| more +%begin_line%') do (
set "location=%%l"
goto :break_for
)
:break_for
echo %location%
del /Q /F "%temp%\empty"
Run Code Online (Sandbox Code Playgroud)
替换some.xml为您的 xml 的名称。
如果您想使用辅助批处理文件(由 aacini 提供),那么这将起作用:
@echo off
for /f "tokens=*" %%a in ('findrepl /i "<location>" /e:"</location>" /o:+1:-1 ^< "file.xml" ') do echo "%%a"
Run Code Online (Sandbox Code Playgroud)
findrepl.bat这使用从 - https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat调用的辅助批处理文件
findrepl.bat与批处理文件放在同一文件夹中。
| 归档时间: |
|
| 查看次数: |
51914 次 |
| 最近记录: |