首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从xml中打印值并使用: Seperator写入文本文件

如何从xml中打印值并使用: Seperator写入文本文件
EN

Stack Overflow用户
提问于 2018-09-20 07:06:01
回答 1查看 45关注 0票数 0
代码语言:javascript
复制
I have a pom.xml, which i need to parse using shell to get the tag values and write it in to text file using ':' as a seperator

**XML:**
<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>

**Expected output:**
com.dtd:dtc-api-commons:3.3.2-SNAPSHOT
com.dtd:dtc-api-commons:3.3.1-SNAPSHOT
com.dtd:dtc-api-commons:3.3.1_1-SNAPSHOT
com.dtd:dtc-api-commons:3.3.0-SNAPSHOT

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-20 09:27:53

假设您将XML封装在根标记中,则可能是POM文件的<project>

代码语言:javascript
复制
<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:

代码语言:javascript
复制
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:打印换行符

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52419451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档