我有一个要解析的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转义字符的搜索毫无结果。
是否有优雅的方式逃避这段时间,或者我是否需要回到绘图板?
答案 0 :(得分:0)
这适用于我的。这有帮助吗?
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