如何在R中读取包含多个根元素的XML文件?

时间:2016-02-08 15:47:50

标签: xml r xml-parsing

我已经推出了一堆格式不正确的XML文件。它们都有多个根元素。当我尝试使用xmlParse中的XML read_xml xml2Error: 1: Extra content at the end of the document {}时,我SELECT *, postId IN (SELECT postId FROM favourites WHERE userId = 5) AS isFavourited FROM userPost <s:iterator><s:iterator id="lstActividades" value="impDesLst"> <tr> <td><input ng-change="actualizarDias();" type="text" class="form-control" name="produccionForm.minutosL<s:property value="%{actividad.idActividad}" />" id="produccionForm.minutosL<s:property value="%{actividad.idActividad}" />" ng_model="minutosL<s:property value="%{actividad.idActividad}" />" ng-init="minutosL<s:property value="%{actividad.idActividad}" />='<s:property value="%{producciones[0].minutos}" />'" /></td> {}包含bar {有没有一个软件包能够轻松阅读多个根元素,还是需要采用更粗野的方法?

2 个答案:

答案 0 :(得分:2)

from House h inner join fetch h.owners where h.town.id = :townId 标准不支持多个根消息。

我建议你将这个内容作为一个字符串阅读,用单根包装并传递给任何xml xml库。

答案 1 :(得分:1)

在xml2包中尝试read_html可以读取它添加一些标签。这是一个例子:

library(xml2)
s <- "<xyz>1</xyz><xyz>2</xyz>"
doc <- read_html(s)

,并提供:

> doc
{xml_document}
<html>
[1] <body>\n  <xyz>1</xyz>\n  <xyz>2</xyz>\n</body>

现在我们可以对doc进行操作,例如

> xml_find_all(doc, "//xyz")
{xml_nodeset (2)}
[1] <xyz>1</xyz>
[2] <xyz>2</xyz>

这也适用于XML包:

library(XML)
doc <- htmlTreeParse(s, asText= TRUE, useInternal = TRUE)
xpathSApply(xmlRoot(doc), "//xyz", xmlValue)

,并提供:

[1] "1" "2"