使用批处理文件解析xml
我一直在使用这里列出的这个想法 但我不能评论,要求更多的问题,所以我要求更多的帮助,这不是一个真正的重复,因为我改变了一些事情 因此,我的channelGuide.xml如下所示使用批处理文件解析xml,xml,batch-file,Xml,Batch File,我一直在使用这里列出的这个想法 但我不能评论,要求更多的问题,所以我要求更多的帮助,这不是一个真正的重复,因为我改变了一些事情 因此,我的channelGuide.xml如下所示 <Guide> <listings> <channels> <channel ID='1' name='big bang' url='http://v.com/bigbang' quality='best' /> &
<Guide>
<listings>
<channels>
<channel ID='1' name='big bang' url='http://v.com/bigbang' quality='best' />
<channel ID='2' name='AMerican Dad' url='http://v.com/americandad' quality='best' />
</channels>
</listings>
</Guide>
我不希望单引号或任何东西看起来像这样:
@echo off
cls
setlocal EnableDelayedExpansion
for /F tokens^=2^-9^,7delims^=^<^"^= %%a in (channelGuide.xml) do (
if "%%a" equ "channel ID" echo(%%b %%c %%d %%e>>"%~d0%~p0\channelListings.txt"
)
'1' name 'big bang' url 'http://v.com/bigbang' quality 'best' />
'2' name 'AMerican Dad' url 'http://v.com/americandad' quality 'best' />
1 big bang http://v.com/bigbang best
2 AMerican Dad http://v.com/americandad best
@ECHO关闭
SETLOCAL
对于(q25617807.txt)中的/F“tokens=2,4,6,8delims=”%%a(
如果“%%d”neq”回波(%%a%%b%%c%%d
)
后藤:EOF
我使用了一个名为q25617807.txt
的文件,其中包含用于测试的数据,并删除了文件重定向以适应我的测试制度
说明,使用提供的单个数据行
<channel ID='1' name='big bang' url='http://v.com/bigbang' quality='best' />
使用单引号作为分隔符将数据行标记为标记
for/f“tokens=1,2,3,5,7,9 delims=”您可以尝试使用-script,通过给定的xpath从xml文件中获取值:
for /f "tokens=1,2,3,5,7,9 delims='<" %%a in (channellistings.xml) do if "%%b"=="channel ID=" echo %%c %%d %%e %f
for /f "tokens=* delims=" %%# in ('xpath.bat "chanel.xml" "//channel[0]/@name"') do (
set name1=%%#
)
for /f "tokens=* delims=" %%# in ('xpath.bat "chanel.xml" "//channel[0]/@url"') do (
set url1=%%#
)
for /f "tokens=* delims=" %%# in ('xpath.bat "chanel.xml" "//channel[0]/@quality"') do (
set quality1=%%#
)
echo %name1% %url1% %quality1%
XML有一些限制,可能会破坏批处理文件解决方案-请在此处阅读:如果您有时间,也许可以解释一下这里正在做什么,以便我可以了解更多。感谢您的帮助,如果XML中有其他行包含8个标记(或更多),则可能会出现问题(这不太可能)@Stephan:当然可以。如果需要,可以通过更改标记
赋值和分析另一个或多个标记来选择输出。不是你说的,不太可能,但可能。更可能的是,程序标题可能包含一个单引号,但这表明语言的命令远远超出了明显的能力不幸的是,txt
一代的s…如果我只是想获取像id#2这样的某个id的信息,那该怎么办?这已经开始成为一个传奇。为了简单地增加id=2,然后将if
语句修改为if“%%d”neq”“if”%%a“eq”2“..
即,当第四个字段存在且第一个字段等于2
时。