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.