R {xml_node} в обычный текст с сохранением тегов?

Я хотел бы сделать именно то, что делают xml2::xml_text() или rvest::html_text(), но сохранить теги вместо замены, например. <br> с \n. Цель состоит в том, чтобы, например. очистить веб-страницу, извлечь нужные мне узлы и сохранить простой HTML в переменной, так же, как write_html() сохранил бы его в файле.

Как я могу это сделать?


person Harold Cavendish    schedule 14.09.2018    source источник
comment
Обращаясь за помощью, вы должны указать простой воспроизводимый пример с образцом ввода и желаемым выводом, которые можно использовать для тестирования и проверки возможных решений.   -  person MrFlick    schedule 14.09.2018
comment
@MrFlick Я знаю, но здесь я задаю очень общий вопрос и поэтому считаю, что предоставленного мной описания должно быть достаточно. Решение, которое я ищу, - это одна функция, уже реализованная в xml2, только без отбрасывания тегов или того, что делает другая функция, только с выводом в другую переменную вместо внешнего файла.   -  person Harold Cavendish    schedule 14.09.2018
comment
Итак, вы хотите сохранить XML в виде строки без синтаксического анализа? Почему вы не можете просто прочитать это как строку? Или вы хотите пройти/изменить дерево с помощью xml2, а затем получить вывод определенных частей в виде необработанной, не проанализированной строки?   -  person divibisan    schedule 14.09.2018
comment
@divibisan Действительно. Потому что структура данных представляет собой список с внешними указателями, и я не знаю, как преобразовать его в строку.   -  person Harold Cavendish    schedule 14.09.2018


Ответы (1)


По иронии судьбы оказывается, что as.character() работает просто отлично.

Следовательно:

library(rvest)
html <- read_html("http://stackoverflow.com")

res <– html %>%
         html_node("h1") %>%
         as.character()

> res

[1] "<h1 class=\"-title\">Learn, Share, Build</h1>"

Это желаемый результат в моем текущем варианте использования.

С другой стороны, для сравнения, если нужно удалить теги:

res <- html %>%
         html_node("h1") %>%
         html_text()

> res
[1] "Learn, Share, Build"
person Harold Cavendish    schedule 15.09.2018