如何使用分隔符从xml中打印值并写入文本文件

时间:2018-09-20 07:06:01

标签: xml shell xml-parsing tags text-files

modal

请帮助我提供准确的shell命令,以使用分隔符解析xml并以期望的格式写入值

1 个答案:

答案 0 :(得分:0)

假设您将XML封装在一个根标记中,对于POM文件来说,可能是<project>

<project>
    <dependency>
              <groupId>com.dtd</groupId>
              <artifactId>dtc-api-commons</artifactId>
              <version>3.3.2-SNAPSHOT</version>
    </dependency>
    <dependency>
              <groupId>com.dtd</groupId>
              <artifactId>dtc-api-commons</artifactId>
              <version>3.3.1_1-SNAPSHOT</version>
    </dependency>
    <dependency>
              <groupId>com.dtd</groupId>
              <artifactId>dtc-api-commons</artifactId>
              <version>3.3.1-SNAPSHOT</version>
    </dependency>
    <dependency>
              <groupId>com.dtd</groupId>
              <artifactId>dtc-api-commons</artifactId>
              <version>3.3.0-SNAPSHOT</version>
    </dependency>
</project>

您可以使用xmlstarlet:

xmlstarlet sel -T -t -m '//project/dependency' -v 'concat(groupId,":",artifactId,":",version)' -nl pom.xml
com.dtd:dtc-api-commons:3.3.2-SNAPSHOT
com.dtd:dtc-api-commons:3.3.1_1-SNAPSHOT
com.dtd:dtc-api-commons:3.3.1-SNAPSHOT 
com.dtd:dtc-api-commons:3.3.0-SNAPSHOT

sel:选择
-T:输出文本
-t:模板
-m:匹配xpath
-v:获取与:串联的所有3个节点的值。
-nl:打印换行符