3

我正在尝试从看起来像这样的 xml 文件中提取数据(见下文)。我需要在节点内提取类型 = 0的节点的id 。我只需要为 R 找到解决方案。现在我可以通过xmlToList("test.xml")[[3]][[1]]xmlToList("test.xml")[[3]][[4]]提取类型和 id 。将 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 有基本的了解。谢谢!

4

1 回答 1

2

您可以尝试以下方法

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

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

这会查找一个名为“node”的节点,其属性“type”的值为 0。然后它返回与该节点关联的 id 的属性值

于 2012-07-07T22:21:07.497 回答