xpathSApply возвращает пустое значение, но xmlValue дает правильное значение, используя пакет XML в R - PullRequest
0 голосов
/ 18 апреля 2020

Недавно я хочу проанализировать файл XML, используя R и пакет XML. Изучив урок веб-сайта, я могу получить значения, которые я хочу, в указанном теге XML. Но когда я хочу проанализировать свой собственный файл xml (файл здесь: https://drive.google.com/open?id=1yr0klZ0eChTAPmZpnlYL-hQ3-42Sply2). Я всегда получаю пустой список (на самом деле, я хочу значение тега P C -ID_id ).

library(XML)
xml = xmlParse('./100000.xml', useInternalNodes = TRUE)
xpathSApply(xml, '//PC-ID_id', xmlValue)
# list()

xmltop = xmlRoot(xml)
xmlValue(xmltop[['PC-AssaySubmit_assay']]
         [['PC-AssaySubmit_assay_descr']]
         [['PC-AssayDescription']]
         [['PC-AssayDescription_aid']]
         [['PC-ID']]
         [['PC-ID_id']]
)
# "100000"

Можете ли вы помочь мне выяснить причину пустого список возвращается при использовании xpathSApply ()?

Спасибо.

1 Ответ

1 голос
/ 18 апреля 2020

Возможно, проблема в том, что ваш документ XML использует пространство имен по умолчанию. Вы должны правильно учитывать это при создании выражения xpath.

Более новая библиотека xml2 упрощает удаление пространства имен по умолчанию. Так, например, вы можете сделать

library(xml2)
read_xml('./100000.xml') %>% 
  xml_ns_strip() %>% 
  xml_find_all("//PC-ID_id") %>% 
  xml_text
# [1] "100000"

Если вы действительно, действительно хотите использовать пакет XML, то посмотрите возможные ответы на этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...