【问题标题】:Extracting text from XML file via batch file通过批处理文件从 XML 文件中提取文本
【发布时间】:2014-07-24 20:07:41
【问题描述】:

我必须通过批处理文件从 XML 文件中提取某些文本。我需要提取的部分之一是字符串标签之间(<string>example1</string>),另一个是数据标签之间(<data>example2</data>)。有什么想法吗?提前致谢!

【问题讨论】:

  • @sachadee 不能用批处理文件?
  • @sachadee 如果没有,我将如何修改您的“StringBetween.au3”脚本以适应我的情况?
  • 你想从上面的行中提取哪些字符串?示例 1 和示例 2?
  • 您可以考虑为此使用 Windows Powershell,因为它本机支持 XML DOM。

标签: xml batch-file text-extraction


【解决方案1】:
@echo OFF

del output.txt

for /f "delims=" %%i in ('findstr /i /c:"<string>" xml_file.xml') do call     :job "%%i"
goto :eof

:job

set line=%1

set line=%line:/=%
set line=%line:<=+%
set line=%line:>=+%
set line=%line:*+string+=%
set line=%line:+=&rem.%
echo.%line%>>output.txt



:eof

使用 OP 的输入文件输出-

D:\>draft.bat

D:\>type output.txt
000000000@gmail.com
default
Web form password
www.instagram.com (000000000@gmail.com)

www.instagram.com

干杯,G

【讨论】:

  • 非常感谢!我认为脚本似乎可以正常工作,因为没有出现任何错误或任何问题。但是,输出文件是否应该与批处理脚本在同一目录中创建?因为找不到。
  • 我已经修改了脚本,现在将输出存储在 output.txt 中。如果它有效,您可以将其标记为答案吗?
  • 我运行了脚本,这是输出文件中的内容:string string data string string stringstring string string string data string string stringstring string string string data string string stringstring string
  • 好的。我现在不在我的电脑上,现在无法测试它。从现在起大约 8 小时内我可以把它修好。但是 o 看不到当前代码有任何问题。请确保不要遗漏任何字符或不要在我的代码中添加任何额外的空格。
  • 这完全适用于我使用的上述示例文件。您是否尝试过上面的示例文件?看看这个link
【解决方案2】:

试试这个:

@echo off
setlocal EnableDelayedExpansion

(for /F "delims=" %%a in ('findstr /I /L "<string> <data>" theFile.xml') do (
   set "line=%%a"
   set "line=!line:*<string>=!"
   set "line=!line:*<data>=!"
   for /F "delims=<" %%b in ("!line!") do echo %%b
)) > result.txt

【讨论】:

  • 非常适合提取&lt;string&gt; 标签之间的内容,但不能提取&lt;data&gt; 标签之间的内容。
  • 如果XML文件在一行中怎么用?
【解决方案3】:

检查xpath.bat 脚本:

call xpath.bat "xml.xml" "//data"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多