使用 Nokogiri 转义标记名称中的句点



我有一个XML文件要解析。以下是一些示例数据:

<result>
            <name>chemical name</name>
            <description></description>
            <ec---list-no.>1123-34-6</ec---list-no.>
            <cas-no.>321-98-7</cas-no.>
            <decision-type>Important</decision-type>
            <decision>http://link to decision</decision>
            <decision-date>12/06/2011</decision-date>
            <further-information></further-information>
            <remarks></remarks>
            <dossier-url>http://link</dossier-url>
</result>

例如,如果我想提取名称,这有效:

doc.xpath('//result').each do |record|
  name = record.at('name').text
  puts name
end

但是,我无法提取ec--list-nocas-no数据,因为标签名称包含句点"."

doc.xpath('//result').each do |record|
  cas = record.at('cas-no.').text
  puts cas
end

引发错误。

unexpected '$' after '.'

我试图用反斜杠""逃脱它,但无济于事。还有单引号和双引号的各种组合。到目前为止,我对CSS转义字符的搜索是徒劳的。

有没有优雅的方式来逃避那个时代,还是我需要回到绘图板?

这对

我有用。这有帮助吗?

require 'nokogiri'
require 'pp'
s = "<result>
  <name>chemical name</name>
  <description></description>
  <ec---list-no.>1123-34-6</ec---list-no.>
  <cas-no.>321-98-7</cas-no.>
  <decision-type>Important</decision-type>
  <decision>http://link to decision</decision>
  <decision-date>12/06/2011</decision-date>
  <further-information></further-information>
  <remarks></remarks>
  <dossier-url>http://link</dossier-url>
</result>"
doc = Nokogiri::XML( s )
doc.xpath( "//result" ).each do | record |
  pp name = record.xpath( "cas-no." )
end

最新更新