Ruby XML 正在解析

Ruby XML Parsing

我有一个示例 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>

我正在尝试使用 Nokogiri 对其进行解析。我的密码是

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

但这不会打印任何内容。我做错了什么?

您需要为命名空间设置别名。

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

您也可以删除命名空间

doc.remove_namespaces!