r - 转换为数据框时的 xml2 命名空间/xpath 问题
问题描述
我正在尝试使用 .xml 将 xml 文档转换为平面数据框xml2
。
这是一些示例代码,删除了架构部分。我正在尝试提取所有“事件”节点:
library(xml2)
test_xml <- as_xml_document(
'<Root>
<xs:schema xmlns="address.com" xmlns:mstns="address.com" id="id">
</xs:schema>
<NewDataSet xmlns="address.com">
<Events>
<VAR1>3119496</VAR1>
<VAR2>3119496</VAR2>
<VAR3>text</VAR3>
</Events>
<Events>
<VAR1>3119496</VAR1>
<VAR2>3119496</VAR2>
<VAR3>text</VAR3>
</Events>
</NewDataSet>
</Root>'
)
这是我使用 RStudio 时的照片read_xml("file_path") %>% View()
:
基于此,我希望类似以下的工作......
xml_df <- test_xml %>%
xml_child(2) %>%
xml_find_all("//Events") %>%
map_df(~ { xml_attrs(.x) %>% as.list() } )
...但事实并非如此。我的猜测是问题出在我的 xpath 中xml_find_all
,但我不确定。任何帮助将非常感激!
编辑:鉴于第一个答案不起作用(在我添加到命名空间之前),我猜测新示例中的命名空间会导致问题。
解决方案
也许您正在寻找这样的东西:
test_xml %>%
xml_find_all(xpath = "//Events") %>%
as_list() %>%
lapply(function(x) as.data.frame(t(unlist(x)))) %>%
{do.call(rbind, .)}
#> VAR1 VAR2
#> 1 3119496 3119496
#> 2 3119496 3119496
推荐阅读
- java - 并行流不适用于将多个文件上传到 aws s3
- php - Wordpress Woocommerce wp->insert 不断重复
- html - 将按钮移动到 div 的顶部
- c# - 404 带参数的 onWeb API 路由
- sql - 在检查约束中使用查询
- c# - 如何使用 Visual Studio 在 C# 中的数据库中存储和加载复选框状态
- ajax - 使用数据表时如何解决jQuery ajax中的以下错误
- javascript - 如何以编程方式修复已经发生的 webGL 上下文丢失(chrome 中的悲伤微笑)?
- openssl - openssl 解密问题因 EVP_DecryptFinal_ex 失败:解密错误
- mysql - EF Core (usdig Raw Sql) 中的 System.InvalidCastException 错误,当查询不返回行时(但在查询返回行时工作)