我正在尝试在<datafield tag="036E">
和</datafield>
之间提取所有内容。
<datafield tag="036E">
<subfield code="a">Collana del dialogo ebraico-cristiano</subfield>
<subfield code="l">1</subfield>
</datafield>
是否可以批量处理findstr和regex,例如[036E">].*[</datafield>]
?
答案 0 :(得分:0)
使用支持XML的工具。例如,在xsh(我碰巧维护的工具)中,您可以编写
open file.xml ;
ls //datafield[@tag='036E'] ;
答案 1 :(得分:0)
此解决方案&#34;使用批处理查找器提取XML中两个标签之间的所有内容&#34;按照您的要求,并正确处理您发布的数据:
@echo off
setlocal EnableDelayedExpansion
set "start="
set "lines="
rem Get start and number of lines with findstr
for /F "delims=:" %%a in ('findstr /N "</*datafield" input.txt') do (
if not defined start (set "start=%%a"
) else if not defined lines set /A "lines=%%a-start-1"
)
for /F "skip=%start% delims=" %%a in (input.txt) do (
echo %%a
set /A lines-=1
if !lines! equ 0 goto exitLoop
)
:exitLoop
但是,如果标签未放置在包含所需数据的单独行中,则此解决方案将失败...