小编uk4*_*4sx的帖子

XMLStarlet不会选择任何内容

我有一个典型的pom.xml,并希望打印groupId,artifactId和版本,用冒号分隔.我认为XMLStarlet是适合它的工具.我尝试了几种方法,但我总是得到一个空行.

xml sel -t -m project -v groupId -o : -v artifactId -o : -v version pom.xml
Run Code Online (Sandbox Code Playgroud)

预期产量:

org.something.apps:app-acct:5.4
Run Code Online (Sandbox Code Playgroud)

实际输出:空行

即使我尝试只打印groupId我什么也得不到:

xml sel -t -v project/groupId pom.xml
Run Code Online (Sandbox Code Playgroud)

我确信该工具可以看到这些元素,因为我可以毫无问题地列出它们:

xml el pom.xml
Run Code Online (Sandbox Code Playgroud)

打印以下(正确):

project
project/modelVersion
project/parent
project/parent/groupId
project/parent/artifactId
project/parent/version
project/groupId
project/artifactId
project/version
project/packaging
Run Code Online (Sandbox Code Playgroud)

怎么了?

这是pom.xml的简化版本:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                        http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.something</groupId>
        <artifactId>base</artifactId>
        <version>1.16</version>
    </parent>

    <groupId>org.something.apps</groupId>
    <artifactId>app-acct</artifactId>
    <version>5.4</version>
    <packaging>war</packaging>

</project>
Run Code Online (Sandbox Code Playgroud)

command-line-interface pom.xml xmlstarlet

16
推荐指数
2
解决办法
8638
查看次数