当我跑步时:
#!/usr/bin/env ruby
require 'nokogiri'
xml = <<-EOXML
<pajamas>
<bananas>
<foo>bar</foo>
<bar>bar</bar>
<1>bar</1>
</bananas>
</pajamas>
EOXML
doc = Nokogiri::XML(xml)
puts doc.at('/pajamas/bananas/foo')
puts doc.at('/pajamas/bananas/bar')
puts doc.at('/pajamas/bananas/1')
我得到一个ERROR: Invalid expression: /pajamas/bananas/1 (Nokogiri::XML::XPath::SyntaxError)
这是Nokogiri不喜欢int作为节点名的情况吗?和/或有什么解决办法吗?
查看文档,我没有看到解决这个问题的方法。删除最后一行可以消 debugging 误,并按预期打印前两个节点。
1条答案
按热度按时间kqlmhetl1#
名称以数字开头的XML元素是无效的XML。
XML元素必须遵循以下命名规则:
如果你想用XML解析器解析无效的XML,那是行不通的。如果你真的想把
<1>
作为一个标签,并且不知怎么的不能控制它,我建议在进入nokogiri之前用正则表达式替换标签。