Ошибка применения xmlParse к ячейкам формата html в R-кадре данных с помощью r-dplyr - PullRequest
1 голос
/ 28 марта 2020

Я пытаюсь извлечь определенные значения из строки html, которая содержится в ячейках R data.frame в такой форме:

|---------------------|------------------|-----------------------------------------------------------------|
|          ID         |       DATE       |                             HTML_RES                            |
|---------------------|------------------|-----------------------------------------------------------------|
|      00000010       |    2020-02-01    | <?xml version="1.0" encoding="ISO-8859-1"?><RespuestaSVC11> ... |
|---------------------|------------------|-----------------------------------------------------------------|
|      00000011       |    2020-02-01    | <?xml version="1.0" encoding="ISO-8859-1"?><RespuestaSVC11> ... |
|---------------------|------------------|-----------------------------------------------------------------|
|      00000012       |    2020-02-01    | <?xml version="1.0" encoding="ISO-8859-1"?><RespuestaSVC11> ... |
|---------------------|------------------|-----------------------------------------------------------------|
|      00000013       |    2020-02-01    | <?xml version="1.0" encoding="ISO-8859-1"?><RespuestaSVC11> ... |
|---------------------|------------------|-----------------------------------------------------------------|

Строка html выглядит следующим образом:

<?xml version="1.0" encoding="ISO-8859-1"?>
<RespuestaSVC11>
    <Header>
        ...
    </Header>
    <Integrante>
        ...
    </Integrante>
    <GrupoCampos>
        <Campo>
            <Nombre>Accion</Nombre>
            <ExisteCampo>0</ExisteCampo>
            <Valor>CALIFICA</Valor>
        </Campo>
        <Campo>
            <Nombre>rp2</Nombre>
            <ExisteCampo>0</ExisteCampo>
            <Valor>813</Valor>
        </Campo>
        <Campo>
            <Nombre>explicacion</Nombre>
            <ExisteCampo>0</ExisteCampo>
            <Valor>El solicitante tiene un RP mayor o igual a 593.</Valor>
        </Campo>
    </GrupoCampos>
</RespuestaSVC11>

Когда я применяю функцию xmlParse к отдельной ячейке через базовые формы, результаты соответствуют ожиданиям:

# Translate HTML
library(XML)

# Scraping
score_xml <- xmlParse(df_raw_data$html_res[1], asText = TRUE)
score_root <- xmlRoot(score_xml)
score_child <- xmlChildren(score_root)

score_det <-  score_child[[3]]

score_res <- xmlValue(xmlChildren(xmlChildren(score_det)[[1]])[[3]])
score_num <- xmlValue(xmlChildren(xmlChildren(score_det)[[2]])[[3]])
score_txt <- xmlValue(xmlChildren(xmlChildren(score_det)[[3]])[[3]])

Но, когда я пытаюсь сделать это через r -dplyr функция, я получаю следующую ошибку:

# Row manupulation
librery(tidyverse)

df_score <- df_raw_data%>%
  mutate(html_parse = xmlParse(html_res, asText = TRUE))
XML declaration allowed only at the start of the document
Extra content at the end of the document
Error: 1: XML declaration allowed only at the start of the document 2: Extra content at the end of the document

любое предложение?

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