2017-10-02 2 views
1
<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/xsd/maven-4.0.0.xsd"> 
<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-api</artifactId> 
      <version>7.0</version> 
     </dependency> 
     <dependency> 
      <groupId>telnet</groupId> 
      <artifactId>telnet.service</artifactId> 
      <version>1.10.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>xmlthing</groupId> 
      <artifactId>xmlthing.service</artifactId> 
      <version>1.9.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>parser</groupId> 
      <artifactId>parser.service</artifactId> 
      <version>1.4.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

XMLパス表現これよりも実質的になる方法を

version属性から値を抽出するのに問題があります。groupId=telnetです。 xmlpathの値を1.10.0-SNAPSHOTにするにはどうすればいいですか?groupId=telnet

申し訳ありません以前には: これはLinux/UNIX形式(xmllint、grep、sed ...)でなければなりません何か: ありがとう! Brgds、 S.

答えて

1

あなたはdependency要素で入れ子になったversionの要素を選択して起動することもできます。

//pom:dependency/pom:version 

をしてからdependency適切資格:もちろん

//pom:dependency[pom:groupId = 'telnet']/pom:version 

を、あなたがする必要がありますXPathの名前空間も指定します。

クイックPowerShellのテスト:

PS> $x | Select-Xml '//pom:dependency[pom:groupId = ''telnet'']/pom:version' -Namespace @{pom = 'http://maven.apache.org/POM/4.0.0'} | % node 


#text 
----- 
1.10.0-SNAPSHOT 
0

私は、XPathを使用して解決策を見つける:

xpath -q -e "//dependency[groupId='telnet']/version/text()" pom.xml 
関連する問題