tku*_*eck 3 ruby nokogiri xml-parsing
XML数据:
<configs>
<config>
<name>XP</name>
<browser>IE</browser>
<browser>FF</browser>
<browser>Chrome</browser>
</config>
</configs>
Run Code Online (Sandbox Code Playgroud)
我是Ruby,Nokogiri和一般编程的新手.我正在尝试编写一个QA工具来帮助实现自动化.
Ruby代码:
doc = Nokogiri::XML(open("configs.xml"))
configs = doc.xpath("//configs/config").map do |i|
{'name' => i.xpath('name').to_s, 'browsers' => i.xpath('browser').to_s}
end
configs.each do |i|
puts i['name']
puts i['browsers']
end
Run Code Online (Sandbox Code Playgroud)
这就是我想要的,它返回数据,但包含XML标签.有没有办法剥夺他们,我只是没有找到?
使用.text获得的文本节点数据:
:name => i.xpath('name').text
Run Code Online (Sandbox Code Playgroud)
.to_s 是XML节点的字符串表示形式,它比您正在寻找的更多.
但是,如果您期望单独的浏览器条目,则其余代码会有点破碎.
原样,它会将文本数据粉碎成一个单独的blob.而是将它们连接在一起等,例如:
configs = doc.xpath("//configs/config").collect do |cfg|
browsers = cfg.xpath('browser').collect { |b| b.text }.join(', ')
{ name: cfg.xpath('name').text, browsers: browsers }
end
configs.each do |i|
puts i[:name]
puts i[:browsers]
end
Run Code Online (Sandbox Code Playgroud)
你可能想要一个blob "IEFFChrome",在这种情况下没关系.
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |