咨询在R中搜索XML转换生成的字符型记录的方法
在R中筛选多行字符里的特定XML条目
假设你已经把XML文件转成了一个名为xml_lines的字符向量(每行对应一个XML条目),可以用以下两种简单方法筛选包含<models>Sud</models>的行:
方法1:用基础R自带函数(无需额外安装包)
基础R的grep函数可以直接匹配字符串模式,筛选符合条件的行:
# 示例模拟你的多行字符数据 xml_lines <- c( "<item><id>1</id><models>Sud</models></item>", "<item><id>2</id><models>Other</models></item>", "<item><id>3</id><models>Sud</models><color>Red</color></item>" ) # 筛选包含<models>Sud</models>的行 matches <- xml_lines[grep("<models>Sud</models>", xml_lines)] # 查看结果 print(matches)
如果你的XML标签和值之间可能有空格(比如<models> Sud </models>),可以调整正则表达式,匹配任意空白字符:
matches_with_space <- xml_lines[grep("<models>\\s*Sud\\s*</models>", xml_lines)]
方法2:用stringr包(语法更直观)
stringr是R中处理字符串的常用包,语法对新手更友好:
# 第一次使用先安装包 install.packages("stringr") # 加载包 library(stringr) # 筛选符合条件的行 matches_str <- str_subset(xml_lines, "<models>Sud</models>") # 处理带空格的情况 matches_str_space <- str_subset(xml_lines, "<models>\\s*Sud\\s*</models>") # 查看结果 print(matches_str)
如果之后遇到更复杂的XML解析需求,建议直接用xml2包读取原始XML文件并解析成结构化数据,但针对你当前的多行字符格式,上面两种方法足够解决问题。
内容的提问来源于stack exchange,提问作者Seq76
相关产品推荐
相关产品推荐

