2016-03-03 5 views
3

Я пытаюсь извлечь некоторую информацию с веб-сайта с использованием библиотеки XML R.Преобразование XMLNodeSet в хорошо сформированный XML-документ

Я загрузил веб-страницу. Затем я извлекаю некоторые соответствующие элементы со страницы, используя выражение Xpath. Обычно это приводит к примерно 50 из этих соответствующих элементов. Затем я хочу сохранить эти соответствующие элементы (XMLNodeSet) в качестве XML-документа (чтобы я мог анализировать результаты в редакторе XML).

Но. До этого я могу сохранить XMLNodeSet, мне нужно преобразовать их в хорошо сформированный XML-документ перед использованием функции XML :: saveXML().

Есть ли у кого-нибудь идеи, как это сделать, используя R-пакет XML. Ниже приведен фрагмент кода:

download.file("https://www.holidayhouses.co.nz/Browse/List.aspx?page=37", "data.html") 
doc <- htmlParse("data.html") 
# set up x-path 
str_x_path_lccg <- "//div[@class = 'ListCard-content group']" 
# extract relevant nodes 
xml_relevant_nodes <- XML::getNodeSet(doc, str_x_path_lccg) 
# need to convert xml_relevant_nodes into a well-formed xml document in order to save it 
# therefore the following fails 
XML::saveXML(xml_relevant_nodes, "test.xml") 

Любые идеи ...?

ответ

2

Спрашивая вопрос, я узнал немного больше о пакете XML R. Вот ответ на первоначально заданный вопрос:

download.file("https://www.holidayhouses.co.nz/Browse/List.aspx?page=37", "data.html") 
doc <- htmlParse("data.html") 
# set up x-path 
str_x_path_lccg <- "//div[@class = 'ListCard-content group']" 
# extract relevant nodes 
xml_relevant_nodes <- XML::getNodeSet(doc, str_x_path_lccg) 
# need to convert xml_relevant_nodes into a well-formed xml document in order to save it 
# firstly, create a single node which will be the parent 
xmlDoc = newXMLNode("top", "topNode", namespace = c(tfm = "http://www.thefactmachine.com")) 
# now we can add the node set to the parent node 
addChildren(xmlDoc, kids = xml_relevant_nodes) 
XML::saveXML(xmlDoc, "test.xml") 
Смежные вопросы