You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将德国议会辩论XML解析为含发言人信息的DataFrame?

R语言解析德国议会辩论XML并整合数据到DataFrame

核心思路

把提取到的各个字段(演讲ID、发言人ID、姓名、演讲内容)分别整理为向量,再直接组合成DataFrame即可。下面是基于xml2包的完整示例(假设你已经完成XML文档的解析和<rede>节点的提取):

代码实现

  1. 加载依赖包(未安装先运行install.packages(c("xml2", "dplyr")))
library(xml2)
library(dplyr) # 可选,简化数据操作
  1. 提取各字段向量
    假设你已经通过xml_read_file()解析了XML文档并得到doc,且获取了所有<rede>节点:
# 获取所有演讲节点
rede_nodes <- xml_find_all(doc, "//rede")

# 提取演讲ID(假设rede节点有id属性)
rede_ids <- xml_attr(rede_nodes, "id")

# 提取发言人ID(假设redner节点有id属性)
speaker_ids <- xml_find_first(rede_nodes, ".//redner") %>% xml_attr("id", default = "无ID")

# 提取发言人姓名
speaker_names <- xml_find_first(rede_nodes, ".//redner/name") %>% xml_text(default = "未知发言人")

# 提取并合并演讲内容(合并所有<p>标签内的文本)
speech_texts <- lapply(rede_nodes, function(node) {
  xml_find_all(node, ".//p") %>% 
    xml_text() %>% 
    paste(collapse = " ")
}) %>% unlist()
  1. 整合为DataFrame
speech_df <- data.frame(
  演讲ID = rede_ids,
  发言人ID = speaker_ids,
  发言人姓名 = speaker_names,
  演讲内容 = speech_texts,
  stringsAsFactors = FALSE
)
  1. 输出要求的结果
# 输出演讲总数
cat("演讲总数:", nrow(speech_df), "\n")

# 输出第一篇演讲内容
cat("第一篇演讲内容:\n", speech_df$演讲内容[1], "\n")

注意事项

  • 如果XML结构和示例不同,需要调整XPath路径(比如<rede>下的内容标签不是<p>,就把.//p改成对应标签)
  • 用xml_text(default = "...")可以避免因节点缺失导致的报错
  • 如果演讲内容包含特殊字符,xml_text()会自动处理,无需额外转义

内容的提问来源于stack exchange,提问作者tetristiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:25:22