使用 nokogiri xpath 访问 xml 中的嵌套元素



我是nokogiri的新手,在使用xpath访问具有特定xmlns的xmlns的xmls文档的嵌套元素时遇到问题。

给定以下代码

#!/opt/chef/embedded/bin/ruby
require 'nokogiri'
doc = Nokogiri::XML.parse <<-XML
<?xml version="1.0" encoding="UTF-8" ?>
  <domain xmlns="urn:jboss:domain:1.8">
    <profiles>
      <profile name="full">
            <subsystem xmlns="urn:jboss:domain:datasources:1.2">
                <datasources>
                    <datasource jndi-name="java:/Paulstestjndi" pool-name="pauls_ds" enabled="false">
                        <connection-url>jdbc:oracle:thin:@testhost1:80001paulstestinstance|jdbc:oracle:thin:@testhost2:80001paulstestinstance</connection-url>
                    </datasource>
                </datasources>
            </subsystem>
        </profile>
    </profiles>
</domain>
XML
datasources = doc.xpath('//datasources:datasource', 'datasources' => "urn:jboss:domain:datasources:1.2")
datasources.each do |datasource|
  conn_url = datasource.xpath("connection-url")
  puts "CLASS = #{conn_url.class}"
  puts "No of Entries = #{conn_url.length}"
end

我能够使用 xpath 检索数据源,但无法使用 xpath 访问每个数据源的"连接网址"。

我已经尝试了几个 xpath 调用来实现这一点,以下是示例

conn_url = datasource.xpath("connection-url")
conn_url = datasource.xpath("//connection-url")
conn_url = datasource.xpath("//datasources:datasource/connection-url", 'datasources'=>"urn:jboss:domain:datasources:1.2")

但每个似乎都返回一组空的结果。

我错过了什么?

这是一个命名空间问题:

datasource.xpath(
  'subsystem:connection-url',
  'subsystem' => 'urn:jboss:domain:datasources:1.2')
#⇒ [#<... name="connection-url" namespace=...

相关内容

  • 没有找到相关文章

最新更新