我正在尝试从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 <b>Target1<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有基本的了解。谢谢!
答案 0 :(得分:2)
您可以尝试以下
xpathSApply(xdata,"//*/node[@type=\"0\"]/@id")
> xpathSApply(xdata,"//*/node[@type=\"0\"]/@id")
id
"680"
这将查找名为“node”的节点,其属性为“type”,值为0.然后返回与此节点关联的id的属性值