Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取一个节点';s属性,这取决于另一个属性及其父属性(在R中使用Xpath)_R_Xml_Xpath - Fatal编程技术网

获取一个节点';s属性,这取决于另一个属性及其父属性(在R中使用Xpath)

获取一个节点';s属性,这取决于另一个属性及其父属性(在R中使用Xpath),r,xml,xpath,R,Xml,Xpath,我有一个具有以下结构的xml文档,我想根据Balance属性bsdate值和BalanceRow属性rowNum值选择valueStart和valueEnd属性值。例如: bsdate='2013'和rowNum='200'的valueStart应为'3000',VALUEND应为'4000' bsdate='2014'和rowNum='102'的valueStart应为'5500',VALUEND应为'6500' 可以在R里做吗?我花了一整天寻找答案,但没能找到 <Root

我有一个具有以下结构的xml文档,我想根据Balance属性bsdate值和BalanceRow属性rowNum值选择valueStart和valueEnd属性值。例如:

  • bsdate='2013'和rowNum='200'的valueStart应为'3000',VALUEND应为'4000'

  • bsdate='2014'和rowNum='102'的valueStart应为'5500',VALUEND应为'6500'

可以在R里做吗?我花了一整天寻找答案,但没能找到

    <Root
    xmlns:a="http://www.w3.org/TR/html4/">
    <Balance bsdate = '2013' bsregdate = '2014.04.01'>
        <BalanceRows type = 'B' rowNum = '100' valueStart = '1000' valueEnd = '2000'></BalanceRows>
        <BalanceRows type = 'B' rowNum = '101' valueStart = '3000' valueEnd = '4000'></BalanceRows>
        <BalanceRows type = 'B' rowNum = '102' valueStart = '5000' valueEnd = '6000'></BalanceRows>
        <BalanceRows type = 'P' rowNum = '200' valueStart = '7000' valueEnd = '8000'></BalanceRows>
        <BalanceRows type = 'P' rowNum = '201' valueStart = '9000' valueEnd = '10000'></BalanceRows>
    </Balance>
    <Balance bsdate = '2014' bsregdate = '2015.04.02'>
        <BalanceRows type = 'B' rowNum = '100' valueStart = '1500' valueEnd = '2500' ></BalanceRows>
        <BalanceRows type = 'B' rowNum = '101' valueStart = '3500' valueEnd = '4500'></BalanceRows>
        <BalanceRows type = 'B' rowNum = '102' valueStart = '5500' valueEnd = '6500'></BalanceRows>
        <BalanceRows type = 'P' rowNum = '200' valueStart = '7500' valueEnd = '8500'></BalanceRows>
        <BalanceRows type = 'P' rowNum = '201' valueStart = '9500' valueEnd = '15000'></BalanceRows>
    </Balance>
</Root>

使用测试数据

library(xml2)
xx <- read_xml("<Root xmlns:a=\"http://www.w3.org/TR/html4/\">
  <Balance bsdate = '2013' bsregdate = '2014.04.01'>
  <BalanceRows type = 'B' rowNum = '100' valueStart = '1000' valueEnd = '2000'></BalanceRows>
  <BalanceRows type = 'B' rowNum = '101' valueStart = '3000' valueEnd = '4000'></BalanceRows>
  <BalanceRows type = 'B' rowNum = '102' valueStart = '5000' valueEnd = '6000'></BalanceRows>
  <BalanceRows type = 'P' rowNum = '200' valueStart = '7000' valueEnd = '8000'></BalanceRows>
  <BalanceRows type = 'P' rowNum = '201' valueStart = '9000' valueEnd = '10000'></BalanceRows>
  </Balance>
  <Balance bsdate = '2014' bsregdate = '2015.04.02'>
  <BalanceRows type = 'B' rowNum = '100' valueStart = '1500' valueEnd = '2500' ></BalanceRows>
  <BalanceRows type = 'B' rowNum = '101' valueStart = '3500' valueEnd = '4500'></BalanceRows>
  <BalanceRows type = 'B' rowNum = '102' valueStart = '5500' valueEnd = '6500'></BalanceRows>
  <BalanceRows type = 'P' rowNum = '200' valueStart = '7500' valueEnd = '8500'></BalanceRows>
  <BalanceRows type = 'P' rowNum = '201' valueStart = '9500' valueEnd = '15000'></BalanceRows>
  </Balance>
  </Root>")
xml_attrs(xml_find_all(xx, "//Balance[@bsdate = '2014']/BalanceRows[@rowNum='200']"))
# [[1]]
#       type     rowNum valueStart   valueEnd 
#       "P"      "200"     "7500"     "8500