2016-04-26 3 views
0

Ich habe ein XML-Beispieldokument wieRuby-XML-Parsing

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <SearchSecretsResponse xmlns="urn:thesecretserver.com"> 
     <SearchSecretsResult> 
     <Errors/> 
     <SecretSummaries> 
      <SecretSummary> 
      <SecretId>86</SecretId> 
      <SecretName>hostName\root</SecretName> 
      <SecretTypeName>Unix Root Account (SSH)</SecretTypeName> 
      </SecretSummary> 
     </SecretSummaries> 
     </SearchSecretsResult> 
    </SearchSecretsResponse> 
    </soap:Body> 
</soap:Envelope> 

Ich versuche, es zu analysieren Nokogiri verwenden. Mein Code ist

doc = Nokogiri::XML.parse(xml) 
puts doc.xpath('//SecretSummary') 

Aber das druckt nichts. Was mache ich falsch ?

Antwort

2

Sie müssen den Namespace aliasieren.

Nokogiri::XML(xml).xpath('//foo:SecretSummary', 'foo' => 'urn:thesecretserver.com') 
+0

Awesome, vielen Dank. – user1191140

1

könnten Sie entfernen auch die Namespaces

doc.remove_namespaces!