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