和有什么区别
node.property("name")
和
node.attributes["name"]
根据文档,一个返回“命名属性值”,另一个返回“属性值”,但我没有看到任何区别。
可能发挥某种作用的一件事是名称空间。这两种方法都有自己的 setter 版本node.property("name")=value
,node.attributes["name"]=value
并且它们处理命名空间属性的方式可能有所不同。
和有什么区别
node.property("name")
和
node.attributes["name"]
根据文档,一个返回“命名属性值”,另一个返回“属性值”,但我没有看到任何区别。
可能发挥某种作用的一件事是名称空间。这两种方法都有自己的 setter 版本node.property("name")=value
,node.attributes["name"]=value
并且它们处理命名空间属性的方式可能有所不同。
Node#property,查看源代码:
# File lib/libxml/properties.rb, line 5
def property(name)
warn('Node#properties is deprecated. Use Node#[] instead.')
self[name]
end
所以你的问题变成了 Node#[] 和 Node#attributes 之间的区别。答案是 Node#[] 返回单个属性,而 Node#attributes 返回包含所有属性的哈希,这比一次检索一个属性更容易。当然,您可以通过在散列后写入 ['some_key'] 来查找任何散列,例如:
puts(
{ a: 1, b: 2}[:b]
)
Node#[] 是查找一个属性的更有效方法,因为它不会首先创建整个哈希。