【问题标题】:How to read in XML files with multiple root elements in R?如何在 R 中读取具有多个根元素的 XML 文件?
【发布时间】:2016-05-18 08:23:29
【问题描述】:

我收到了一堆格式不正确的 XML 文件。它们都有多个根元素。 XML 中的 xmlParsexml2 中的 read_xml 都打包了 barf,当我尝试使用它们与 Error: 1: Extra content at the end of the document 一起读取它们时。是否有一个包可以让读取多个根元素变得容易,还是我需要求助于更粗暴的方法?

【问题讨论】:

    标签: xml r xml-parsing


    【解决方案1】:

    xml 标准不支持多根消息。

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

    【讨论】:

      【解决方案2】:

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

      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"
      

      【讨论】:

        猜你喜欢
        • 2013-03-22
        • 1970-01-01
        • 1970-01-01
        • 2019-08-07
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        • 2012-07-23
        • 1970-01-01
        相关资源
        最近更新 更多