我正在使用这个 xmlstarlet 命令:
xmlstarlet sel -t -m "//path" -v "dir" -o "" -v "file"
在此 XML 结构上
<pathlist>
<path>
<dir>C:\</dir>
<file>file1.txt</file>
</path>
<path>
<dir>C:\</dir>
<file>file2.txt</file>
</path>
</pathlist>
我得到的结果是:
C:\file1.txtC:\file2.txt
作为一个字符串,但两个路径名之间没有任何空格。 仍然获取一个字符串但路径名之间有一个空格的正确 xmlstarlet 命令是什么:
C:\file1.txt C:\file2.txt
最佳答案
只需将 -o
输出开关移到 file
XPath 之后,并给它一个空格而不是空字符串参数:
xmlstarlet sel -t -m "//path" -v "dir" -v "file" -o " " in.xml
然后你会在每个文件
后面看到一个空格:
C:\file1.txt C:\file2.txt
更新
如果您提前知道要连接到单个字符串中的路径数,则可以使用 concat()
:
xml.exe sel -t -v "concat(//path[1]/dir, //path[1]/file, ' ', //path[2]/dir, //path[2]/file)" in.xml
关于结果之间有空格的 xmlstarlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28488698/