3

このようなxmlファイルからデータを抽出しようとしています(以下を参照)。type=0のノードノード内でidを抽出する必要があります。私はRだけの解決策を見つけなければなりません。今のところ、タイプはxmlToList( "test.xml")[[3]] [[1]]で、IDはxmlToList( "test.xml")[[3]][[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の基本的な知識を持っています。ありがとうございます。

4

1 に答える 1

2

あなたは以下を試すことができます

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

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

これにより、値が0の属性「type」を持つ「node」という名前のノードが検索されます。次に、このノードに関連付けられたidの属性値が返されます。

于 2012-07-07T22:21:07.497 に答える