第3方 xmlStarLet 下载:http://bcn.bathome.net/tool/xml.exe
找到包含 Soul Crystal 的注释节点后面的下一个节点XPath1以及最后一个节点XPath2,放到 for 循环中处理。- @echo off
- set "XPath1=//item/comment()[contains(string(),'Soul Crystal')]/following-sibling::*[1]"
- set "XPath2=//item/comment()[contains(string(),'Soul Crystal')]/following-sibling::*[last()]"
- setlocal enabledelayedexpansion
- (for %%i in (*.xml) do (
- for /f %%j in ('xml sel -t -m "%XPath1%|%XPath2%" -n -v "@id" "%%i"') do (
- if defined s (
- echo;!s!,%%j
- set "s="
- ) else (
- set "s=%%j"
- )
- )
- )) > 0.csv
- pause
复制代码 sed下载:http://bcn.bathome.net/tool/4.8/sed.exe
原理大概是:
先定位 <item> 与 </item> 区间,再定位 Soul Crystal 与 production 区间,
找到关键字Soul Crystal,把下一行hold住;找到production的行,hold追加到模式空间,再回显。- sed -r -n "/<item>/,/<\/item>/{/Soul Crystal/,/production/{/Soul Crystal/{n;h};/production/{G;s/^.*id=\"([0-9]+)\".*\n.*id=\"([0-9]+)\".*$/\2,\1/;p}}}" *.xml > 1.csv
复制代码
|