Очень типичная проблема при работе с файлами XML, поскольку документ имеет пространство имен по умолчанию, обозначенное без префикса, разделенного двоеточиями: xmlns="http://www.xbrl.org/2003/instance"
.
В результате узлы, не находящиеся в локальном пространстве имен, привязаны к этому значению по умолчанию, и любой XPath должен запускать определенный пользователем префикс для сопоставления узла с ним. К счастью, xml2
позволяет это, так как xml_find_first
поддерживает третий аргумент, ns , который принимает именованный вектор или xml_ns()
call:
# CREATED DOC PREFIX AND INCLUDED IN XPATH
xml_find_first(eqr, xpath = "doc:unit", ns = c(doc="http://www.xbrl.org/2003/instance"))
# {xml_node}
# <unit id="U_shares">
# [1] <measure>shares</measure>
В качестве альтернативы, xml2
также позволяет удалять пространства имен по умолчанию:
xml_find_first(xml_ns_strip(eqr), xpath = "unit")
# {xml_node}
# <unit id="U_shares">
# [1] <measure>shares</measure>