В чем разница между именованными свойствами и атрибутами в libxml-ruby?
В чем разница между
node.property("name")
а также
node.attributes["name"]
Согласно документации одно возвращает "значение именованного свойства", а другое "значение атрибута", но я не вижу никакой разницы.
Одна вещь, которая может играть некоторую роль - это пространства имен. Оба метода имеют свои установочные версии node.property("name")=value
а также node.attributes["name"]=value
и может быть разница в том, как они обрабатывают атрибуты пространства имен.
1 ответ
Свойство Node #, просмотр источника:
# 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 # attribute возвращает хеш, содержащий все атрибуты, что проще, чем извлекать их по одному за раз. Конечно, вы можете выполнить поиск любого хэша, написав ['some_key'] после хэша, например:
puts(
{ a: 1, b: 2}[:b]
)
Узел # [] - более эффективный способ поиска одного атрибута, потому что он не создает весь хеш первым.