maven の pom.xml に対して xmllint の xpath で要素を拾うことができない

投稿者: Anonymous

以下のような dummy-pom.xml ファイルを用意しました。

<?xml version="1.0"?>
<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>dummy</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <artifactId>dummy-pom</artifactId>
  <packaging>pom</packaging>
</project>

この状態から、 xmllint で、 xpath によって要素を取得しようとしたのですが、正しく動作してくれません。

$ xmllint --xpath '/project' dummy-pom.xml
XPath set is empty

これは、xpath の指定が間違っているのだと考えられますが、どう間違っているのかがわからずにいます。

質問:

上記ファイルに対して xpath で要素を取得できないのはなぜでしょうか?

解決

既定のxmlnsが指定されているので名前空間を指定しないprojectではマッチしないと思われます。ローカル名で

/*[local-name()='project']

と判定するか、XMLにxmlns:hoge="http://maven.apache.org/POM/4.0.0"のようにプレフィックスを定義してから/hoge:projectとテストすべきではないでしょうか。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *