我有一个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-no
或cas-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