разбор текста / xml в фрейм данных - PullRequest
1 голос
/ 20 октября 2019

Используя пакет httr, я извлек содержимое из API следующим образом. полученное содержимое - «text / xml». Выходные данные снизу вставляются в конце. Я преобразовал в xml следующим образом

res_xml <- httr::content(res, as = "text", encoding = "UTF-8") %>%
xml2::read_xml()

Когда я проверял дочерние элементы, он, кажется, имеет node_set

xml_children(res_xml )

{xml_nodeset (4)}
[1] <type value="searchset"/>
[2] <total value="1"/>
[3] <link>\n  <relation value="self"/>\n  <url value= ...
[4] <entry>\n  <link>\n    <relation value="self"/>\n ...

Но, когда я вытягиваю узел "entry", кажется, что нетданные.

xml_find_all(res_xml ,".//entry")
{xml_nodeset (0)}

Вместо работы с форматом xml я преобразовал в список, и это полные вложенные списки списков с неравными записями.

xml_list <- xml2::as_list(res_xml)

Мне понадобится кадр данных для конкретногозаписи или, что более благоприятно, завершают вывод в формате xml в виде отдельных таблиц, так что я могу выбрать данные, с которыми я могу работать намного проще. Следовательно, попробовал следующее. Но все выходные данные равны NULL.

lst <- xml_list$Bundle$entry 
lst %>% dplyr::bind_rows()

# A tibble: 17 x 4
   relation url    Patient          mode  
   <list>   <list> <list>           <list>
 1 <NULL>   <NULL> <list [0]>       <NULL>
 2 <NULL>   <NULL> <named list [1]> <NULL>
 3 <NULL>   <NULL> <named list [1]> <NULL>
 4 <NULL>   <NULL> <named list [1]> <NULL>
 .....

, когда я заметил, что str (lst) в списке содержит NULL list () и attr (значение). Я заинтересован в значении attr. Если я преобразовываю xml в JSON, все равно NULL.

Любая помощь в том, как правильно сгладить этот список, будет принята с благодарностью. или, что еще лучше, я могу разобрать напрямую с помощью пакета xml2.


входные данные

<Bundle xmlns="\"http://hl7.org/fhir\""><type value="\"searchset\""/><total value="\"1\""/>
  <resource>
      <Patient><id value="\"TzfXm.YeCZh5GLGCXoCQqmjyn9vSjtJtIlcakCeyfbEcB\""/>
        <extension url="\"http://hl7.org/fhir/StructureDefinition/us-core-race\"">
          <valueCodeableConcept>
            <coding><system value="\"urn:oid:2.16.840.1.113883.5.104\""/><code value="\"UNK\""/><display value="\"Unknown\""/></coding><text value="\"Unknown\""/></valueCodeableConcept>
        </extension>
        <extension url="\"http://hl7.org/fhir/StructureDefinition/us-core-ethnicity\"">
          <valueCodeableConcept>
            <coding><system value="\"urn:oid:2.16.840.1.113883.5.50\""/><code value="\"UNK\""/><display value="\"Unknown\""/></coding><text value="\"Unknown\""/></valueCodeableConcept>
        </extension>
        <extension url="\"http://hl7.org/fhir/StructureDefinition/us-core-birth-sex\"">
          <valueCodeableConcept>
            <coding><system value="\"http://hl7.org/fhir/v3/AdministrativeGender\""/><code value="\"F\""/><display value="\"Female\""/></coding><text value="\"Female\""/></valueCodeableConcept>
        </extension>
        <identifier><use value="\"usual\""/><system value="\"urn:oid:1.2.840.114350.1.13.172.3.7.5.737384.0\""/><value value="\"E296\""/></identifier>
        <identifier><use value="\"usual\""/><system value="\"urn:oid:1.2.840.114350.1.13.172.2.7.5.737384.100\""/><value value="\"410000236\""/></identifier><active value="\"true\""/>
        <name><use value="\"usual\""/><text value="\"Mother Milltest\""/><family value="\"Milltest\""/><given value="\"Mother\""/></name><gender value="\"female\""/><birthDate value="\"1978-05-06\""/><deceasedBoolean value="\"false\""/></Patient>
    </resource>
    <search><mode value="\"match\""/></search>
  </entry>
</Bundle>
...