代码之家  ›  专栏  ›  技术社区  ›  Sandra

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

  •  0
  • Sandra  · 技术社区  · 9 年前

    xmlstarlet可以与字符串而不是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
    
    ^
    

    这实际上是一项简单的任务,但我无法让它发挥作用。我只想在OneLiner中向xmlstarlet回显一个字符串。

    1 回复  |  直到 9 年前
        1
  •  0
  •   npostavs    9 年前

    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.