Я пытаюсь извлечь определенные значения из строки 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
любое предложение?