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]
メソッドが[]
nodeset を Float64 としてinspect
認識している理由がわかりません。class
XML::Nodeset
私は何が欠けていますか?
[]
String にはメソッドがあり、Float64 にはメソッドがないのは偶然ですか?