2016-04-26 94 views
0

我有一个像红宝石XML解析

<?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> 

一个示例XML文档我试图通过引入nokogiri解析它。我的代码是

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

但是这并不打印任何东西。我究竟做错了什么 ?

回答

2

您需要别名命名空间。

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

真棒,非常感谢。 – user1191140

1

您也可以删除命名空间

doc.remove_namespaces!