使用xmlstarlet从XML中选择 - 语法查询

时间:2014-03-14 09:13:31

标签: xml xmlstarlet

我有一个XML文件,我试图将其转换为更像CSV格式的东西(有些格式将输出放在一个带有公共分隔符的行上),但我无法得到语法正确,有人可以帮忙吗? XML看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<TranslationTable>
        <Translation Key="Document1" RelativePath="/home/path1">
                <Title>Doc1</Title>
                <Description>First document</Description>
        </Translation>
        <Translation Key="Document2" RelativePath="/home/path2">
                <Title>Doc2</Title>
                <Description>Second document</Description>
        </Translation>
</TranslationTable>

目前我的命令就是这个

xmlstarlet sel -t -m //Translation -v @Key -o "|" -v @RelativePath -n /root/XML/file.xml
Document1|/home/path1
Document2|/home/path2

但我喜欢的还包括Title字段的内容,以便输出就像这样

Document1|/home/path1|Doc1
Document2|/home/path2|Doc2

有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:1)

它是XPath

xmlstarlet sel -t -m //Translation -v @Key -o "|" -v @RelativePath  -v 'Title/text()' -n /root/XML/file.xml