如何计算 XML 文件中的数字(字符串格式)

How to calculate numbers(in string format) in the XML file

我有以下 XML 数据,我想计算一下

<data>
    <numbers>
        <value>1 - 3</value>
    </numbers>
    <numbers>
        <value>5 - 10</value>
    </numbers>
    <numbers>
        <value>2.4 +/- 3.2</value>
    </numbers>
    <numbers>
        <value>10</value>
    </numbers>
    <numbers>...</numbers>
    <numbers>...</numbers>
    <numbers>...</numbers>
    ...
</data>

如上,有两个问题,一个是值是字符串格式,另一个问题是值的类型不同,有些使用+/-,有些使用范围。

逻辑上我知道该怎么做,只需使用 if-else 来检测不同的格式,例如:

if (tag "value" contains "+/-"):
    Separate the string by "+/-", convert the number from string to number
    use first number + last number to find the biggest number
    use first number - last number to find the smallest number

if (tag "value" contains "-"):
    Separate the string by "-", convert the number from string to number
    first number is smallest number, last number is biggest number

if (tag "value" contains a "whole number"):
    Just convert it into number format and done.

编程是这样的,我是一名学生,目前正在自学R语言,我知道如何去做,但我不知道如何编码,也许有有一些库或函数可以做到这一点。

如果你知道怎么做,请帮助我,非常感谢,我非常感谢你的帮助:)

h <- "<data>
  <numbers>
  <value>1 - 3</value>
  </numbers>
  <numbers>
  <value>5 - 10</value>
  </numbers>
  <numbers>
  <value>2.4 +/- 3.2</value>
  </numbers>
  <numbers>
  <value>10</value>
  </numbers>
</data>
"
h <- XML::xmlParse(h)
v <- XML::xpathSApply(h, "//value", XML::xmlValue)
lapply(v, function(x) {
  if (stringr::str_detect(x,"\+/-")) {
    num1 <- stringr::str_extract(x, ".+(?=\+/-)")
    num2 <- stringr::str_extract(x, "(?<=\+/-).+")

    list(
      "+" = sum(as.numeric(c(num1, num2))),
      "-" = diff(as.numeric(c(num1, num2)))
    )
  } else {
    eval(parse(text=v[1]))
  }
})