R:从XML访问/提取值时遇到问题

R:从XML访问/提取值时遇到问题,r,xml,import,R,Xml,Import,在过去的4个小时里,我一直在尝试通过R访问xml文件中的一些值,但没有任何运气,现在我完全没有新的想法 这是xml文件: 我试图获取//OrderTimeSeries//SupplyCurve//Period//Interval//Point中的所有数量值,以便第一个条目为0,下一个条目为0,然后是23,依此类推 我试过这样的东西: library(XML) doc <- xmlParse("http://opcom.ro/order_book/OBK-30XROOPCOM---

在过去的4个小时里,我一直在尝试通过R访问xml文件中的一些值,但没有任何运气,现在我完全没有新的想法

这是xml文件:

我试图获取//OrderTimeSeries//SupplyCurve//Period//Interval//Point中的所有数量值,以便第一个条目为0,下一个条目为0,然后是23,依此类推

我试过这样的东西:

library(XML)    

doc <- xmlParse("http://opcom.ro/order_book/OBK-30XROOPCOM-----C-2016-08-19.xml")

qty <- unlist(xpathApply(doc,"//OrderTimeSeries//SupplyCurve//Period//Interval//Point",xmlvalue))
我认为,如果xml是这样编写的,那么这将是可行的

<Qty>"0.00000000000"<Qty/>
但是我不知道如何提取值,当它写在v=000000000000的函数中时

每个记录中都有一个节点。我怀疑这是重要的数据,以不同的方式识别每个时间序列,你只是在用粗糙的选择器扔掉它

您可以用一种简单的方式解决此问题:

找到每个间隔 提取位置 找到要点 提取点的子值 并在此过程中构建data.frame:

library(xml2)
library(purrr)

doc <- read_xml("http://opcom.ro/order_book/OBK-30XROOPCOM-----C-2016-08-19.xml")

names_and_values <- function(x) {
  names <- xml_name(xml_find_all(x, ".//*"))
  vals <- as.numeric(xml_attr(xml_find_all(x, ".//*"), "v"))
  df <- rbind.data.frame(vals)
  setNames(df, names)
}

pos_and_points <- function(x) {
  pos <- as.numeric(xml_attr(xml_find_first(x, ".//Pos"), "v"))
  xml_find_all(x, ".//Point") %>% 
    map_df(names_and_values) -> df
  df$pos <- pos
  df
}

xml_find_all(doc, ".//OrderTimeSeries/SupplyCurve/Period/Interval") %>% 
  map_df(pos_and_points) -> df

dplyr::glimpse(df)
## Observations: 5,316
## Variables: 4
## $ Qty         <dbl> 0.0, 0.0, 23.0, 23.0, 26.5, 26.5, 56.8, 56.8, 150.5, 150.5, 171.5, 171....
## $ PriceAmount <dbl> -5.000000e+02, -2.500000e+01, -2.500000e+01, -2.235536e+01, -2.235536e+...
## $ SeqNr       <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
## $ pos         <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...

在StackOverflow上,您需要提供所谓的MCVE:而不仅仅是指向XML文档的链接。我们可以给你更好的帮助,如果你展示一个例子,说明什么工作正常,有任何输出,什么不工作,同样有输出。在创造的过程中,你可能会解决你自己的问题,但如果没有,提供更全面的信息,我们可以提供帮助。看起来不像我习惯的那个。它具有节点、属性和值。有点像我见过的其他XML文件。对不起,我对stackoverflow和XML格式都是新手。我尝试在描述中添加一些文字:-非常感谢你。这是一个巨大的帮助。我可以很容易地理解您的主要思想,并且您的代码非常可读。我以前从未听说过purr的map_df,-从现在起我将使用该软件包。