我正在使用 Crystal,并试图在 XML 文档中检索节点的 ID:
<foo ID="bar"></foo>
我正在使用以下代码获取 ID
require "xml"
file = File.read("path/to/doc.xml")
xml = XML.parse(file)
xpath_context = XML::XPathContext.new(xml)
nodeset = xpath_context.evaluate("//foo/@ID")
如果我检查节点集,我会得到我期望的内容:
[#<XML::Attribute:0x1287690 name="ID" value="bar">]
并nodeset.class
返回XML::NodeSet
有一个实例方法[]
。所以我相信我应该能够做到这一点来获得价值:
node = nodeset[0]
node.value
但是,当我打电话时,nodeset[0]
我收到以下错误:
undefined method '[]' for Float64 (compile-time type is (String | Float64 | Bool | XML::NodeSet))
node = nodeset[0]
我不明白为什么[]
当两者都将节点集视为 Float64inspect
并将class
其视为XML::Nodeset
.
我错过了什么?
String 有[]
方法,而 Float64 没有,这是巧合吗?