DOS/Windows xmlstarlet使用字符串而不是xml文件



xmlstarlet可以与String一起使用而不是与xml文件一起使用吗?例如:

xmlstarlet sel -t -v "/*" "<pathlist><path>C:file.txt</path></pathlist>"

而不是

xmlstarlet sel -t -v "/*" pathlist.xml

否则我怎么能用绳子实现呢?当我回显字符串并将其管道传输到xmlstarlet时,它不起作用:

SET "_var=^<pathlist^>^<path^>C:file.txt^</path^> ^</pathlist^>"
& 
call echo %^_var% | xmlstarlet sel -t -v "//*"

给出错误:

< was unexpected at this time.
-:1.1: Document is empty
^
-:1.1: Start tag expected, '<' not found
^

事实上这是一项简单的任务,但我做不到。我只想在一个Liner中回显一个字符串到xmlstarlet。

cmd.exe语法很奇怪,使用set /p的以下技巧似乎有效:

C:tmp><nul (set /p ="<pathlist><path>C:file.txt</path></pathlist>") | xmlstarlet sel -t -v /*
C:file.txt

/*可能会进行glob扩展(取决于您拥有的文件)。不幸的是,无法从cmd.exe中引用它(扩展由libc代表xmlstarlet执行),因此在这种情况下,您将不得不重写XPath,例如/pathlist

来源:https://groups.google.com/d/msg/alt.msdos.batch.nt/RNug94fXI5s/BdgYJfNmXysJ通过http://www.netikka.net/tsneti/info/tscmd047.htm


我找不到解释为什么转义<>不适用于|重定向??

C:tmp> echo ^<^>
<>
C:tmp> echo ^<^> | more
> was unexpected at this time.

相关内容

  • 没有找到相关文章

最新更新