【问题标题】:Extracting Attributes from XML File从 XML 文件中提取属性
【发布时间】:2018-08-28 20:30:32
【问题描述】:

我有一个在 R 中解析过的示例 XML 文件

<ROUGHTDRAFT_FILE MV="00" MMV="00" 
    tId="0000">
     <HEADER Location="Utah" dateCreated="1/1/99">
    </HEADER>

    <COVERSHEET>
       <PRIMIARY_INFO eName="John Smith" pList="XXXXX" 
             type="Remodel" cNumber="00000" 
              policyNumber="00000000000"  />
   </COVERSHEET>
</ROUGHDRAFT_FILE>

加载 XML 并将其命名为文件后,出现错误。这是我的代码:

xml <- xmlParse(file) 

这项工作很好

当我尝试提取属性时,它给了我一个错误

EstAttribs <- xpathApply(xml, path="//PRIMIARY_INFO", xml_attrs )

Error in UseMethod("xpathApply") : 
  no applicable method for 'xpathApply' applied to an object of class "c('XMLDocument', 'XMLAbstractDocument')"

关于如何解决此问题的任何建议?我必须为 xml_attrs 指定一些东西吗?

【问题讨论】:

  • 检查第一行 xmlParse 中的任何错误。您的根标签不匹配、拼写错误。
  • 您似乎正在混合 XML and xml2` 包中的函数,这不是一个好主意。如果你使用xpathApply(xml, path="//PRIMIARY_INFO", xmlAttrs ) 会怎样?这对我有用的示例文件(使用XML 库)。 xml_attrs 函数(带下划线)来自xml2

标签: r xml parsing


【解决方案1】:

MrFlick 已经给了你一个答案。这是另一个可能有用的。正如他所建议的,不要尝试将 XML 库中的函数与 rvestxml2 混合使用。

# here is the rvest and xml2 solution
# rvest calls xml2 since it is a dependency
library(rvest)
xml_file <- read_xml("test.xml")

xml_file %>%
  xml_find_all('//PRIMIARY_INFO') %>%
  xml_attrs('eName') 

[[1]]
        eName         pList          type       cNumber  policyNumber 
 "John Smith"       "XXXXX"     "Remodel"       "00000" "00000000000" 

# this solution is purely using XML - as suggested by  MrFlick
library(XML)
xml_file <- xmlParse("test.xml")
xpathApply(xml_file, path="//PRIMIARY_INFO", xmlAttrs )

[[1]]
        eName         pList          type       cNumber  policyNumber 
 "John Smith"       "XXXXX"     "Remodel"       "00000" "00000000000" 

我认为this SO 问题可能包含对您有用的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2020-11-11
    • 1970-01-01
    • 2014-02-21
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多