仅使用R从xml文件(声明)中提取数据

时间:2012-07-07 21:51:25

标签: xml r

我正在尝试从xml文件中提取看起来像这样的数据(见下文)。我需要在节点中为节点提取 id ,其中type = 0。我必须找到R的解决方案。 现在我可以通过 xmlToList(“test.xml”)[[3]] [[1]] 提取类型,并通过 xmlToList(“test.xml”)[[3]提取id ] [[4]] 。更改3到6,9等 - 我可以检索所有需要的类型和ID。但我不确定这是否正确,因为它基于可以更改的编号(在xml结构更改的情况下)。您能否提出另一种从xml中提取数据的更简单方法?或我的非理想解决方案的任何修改?感谢的!

<?xml version="1.0" encoding="UTF-8"?>
<image name="test1" id="367432589" width="952" height="1024" create_date="Mar 2, 2009" >
  <nodes>
    <node type="16" name="Target532" url="/cgi/im?id=5657" id="5657" x="67" y="45" width="153" height="69">
      <alt>Synthesis1</alt>
      <Appearance TextArea="Rectangle: 550"  Comlex="Boolean: true" />
    </node>
    <node type="0" name="Target1" url="/cgi/im?id=680" id="680" x="193" y="535" width="70" height="70">
      <alt>Object &lt;b&gt;Target1&lt;TestingCond32</alt>
      <Appearance TextArea="Rectangle: 210"  Comlex="Boolean: false" />
    </node>
  </nodes>
  <edges>
    <edge type="-100" id="234523">
      <alt />
      <Appearance Visualization="String: Hexa" HexagonIndex="Integer: 0" />
    </edge>
    <edge type="-100" id="23">
      <alt />
      <Appearance Visualization="String: Hexa" HexagonIndex="Integer: 0" />
    </edge>
  </edges>
</image>

我是xml的新手,对R有基本的了解。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以尝试以下

xpathSApply(xdata,"//*/node[@type=\"0\"]/@id")

> xpathSApply(xdata,"//*/node[@type=\"0\"]/@id")
   id 
"680" 

这将查找名为“node”的节点,其属性为“type”,值为0.然后返回与此节点关联的id的属性值