R语言使用XML包通过XPath获取XML节点值失败问题求解
问题原因
你原有代码返回的是XML节点对象列表,没有提取节点内存储的文本内容,也未做数值类型转换,因此无法得到预期的29.99数值结果。
正确实现方法
首先需要确认你已经完成XML内容的解析,生成了XMLInternalDocument类型的doc对象,完整流程如下:
library(XML) # 1. 准备并解析XML内容(若你已经完成解析可跳过这部分) xml_content <- '<book> <title lang="en">Harry Potter</title> <price>29.99</price> </book>' doc <- xmlParse(xml_content) # 2. 提取price节点数值 # 方法1:在xpathSApply中指定xmlValue参数直接提取节点文本 price_text <- xpathSApply(doc, '//book/price', xmlValue) price <- as.numeric(price_text) # 方法2:直接通过XPath定位到文本节点再取值 price <- as.numeric(xpathSApply(doc, '//book/price/text()', xmlValue)) # 单节点场景可选写法:先取节点再提取值 price_node <- getNodeSet(doc, '//book/price')[[1]] price <- as.numeric(xmlValue(price_node))
以上任意一种方法运行后,price变量的取值就是你需要的29.99数值。
内容的提问来源于stack exchange,提问作者weddegege
相关产品推荐
相关产品推荐

