Я пытаюсь извлечь информацию из файлов xml (или, точнее: xbrl), которые ссылаются на множество пространств имен. Меня не волнует пространство имен, и я предпочел бы иметь возможность поиска по файлам без указания их.
Вот пример:
require(magrittr)
xml <-xml2::read_xml("http://regnskaber.virk.dk/21560853/ZG9rdW1lbnRsYWdlcjovLzAzLzdlLzk4L2JiLzg4L2NiNzctNDE2ZC1hOWJmLTkxN2QxZWRkMGY0Yg.xml")
этот файл содержит следующий узел:
<cmn:IdentificationNumberOfAuditor contextRef=\"duration_IdentificationOfAuditorDimension_cmn_auditorIdentifier_only_1\">mne18078</cmn:IdentificationNumberOfAuditor>
Я знаю, что могу найти его, используя
xml2 :: xml_find_all (xml, '// cmn: IdentificationNumberOfAuditor')
Но это только в том случае, если я знаю префикс пространства имен, и я не уверен, что они даются одинаково во всех тысячах файлов, которые мне нужно обработать. Я надеялся, что это сработает:
xml2::xml_find_all(xml2::xml_ns_strip(xml), '//IdentificationNumberOfAuditor')
потому что я думал, что xml_ns_strip лишит xml-файл информации о пространстве имен. Однако, xml_ns_strip, похоже, вообще ничего не делает, так как:
identical(xml %>% as.character(), xml_ns_strip(xml) %>% as.character())
возвращает истину.