2017-10-19 10 views
0

nokogiriが新しく、xpathを使用してXML文書のネストされた要素に特定のxmlnsでアクセスするのに問題があります。nokogiri xpathを使用してxmlns内のネストされた要素にアクセスする

は、私はXPathを使用してデータソースを取得できていますが、各データソースのための「接続URL」をアクセスするためのXPathを使用することができません次のコード

#!/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を試してみました

が、この例を次に示し

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") 

を達成するために呼び出します。しかし、それぞれの結果の空のセットを返すように思えます。

私には何が欠けていますか?

答えて

0

これは、名前空間の問題だ:

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