【发布时间】:2017-04-05 06:43:26
【问题描述】:
我正在尝试使用 Nokogiri 解析 POM 文件,并且想要获取第一级子节点。
我的 POM 文件如下所示:
<project xmlns="some.maven.link">
<parent>
<groupId>parent.jar</groupId>
<artifactId>parent-jar</artifactId>
</parent>
<groupId>child.jar</groupId>
<artifactId>child-jar</artifactId>
</project>
我正在尝试获取 artifactId “child-jar”,但我使用的 XPath 可能不正确,它首先获取的是“parent.jar”。
这是我的 Ruby 代码:
@pom = Nokogiri::XML(File.open(file_path))
p @pom.xpath("/project/artifactId", project"=>"http://maven.apache.org/POM/4.0.0")[0].text
我可以访问第二个元素,但这只是一个 hack。
【问题讨论】:
-
虽然我没有工具来测试您的 ruby 代码,但您的 XPath 应该返回only 'child-jar' : xpatheval.apphb.com/DI8w0z8D1.
-
问题是命名空间。它没有在选择器中被引用,所以 Nokogiri/libXML2 不知道去哪里找。