R语言xml2库xml_replace替换XML节点后残留格式符号如何解决
问题原因
直接向xml_replace传入普通字符串时,函数会默认将字符串识别为新XML元素的名称,因此会生成带尖括号的自闭合标签,而非你预期的纯文本内容。
解决方法
你需要先将目标文本创建为XML的纯文本节点,再用文本节点替换原有的name节点,实现代码如下:
library(xml2) # 读取原始XML x <- read_xml( "<scenario> <event> <dataProbeEvent> <name>LogSurvResHigh</name> </dataProbeEvent> </event> <event> <accumulateEvent> <name>SetSurvOut</name> </accumulateEvent> </event> </scenario>") # 匹配所有name节点 namerefs <- xml_find_all(x, './/name') # 逐节点替换为纯文本节点 for (node in namerefs) { text_content <- xml_text(node) xml_replace(node, xml_new_text(text_content)) } # 输出验证结果 x
运行后输出的结果和你预期的效果完全一致,原name节点位置会直接保留文本内容,不会生成额外的标签。
内容的提问来源于stack exchange,提问作者agbarnett
相关产品推荐
相关产品推荐

