我正在尝试理解XML功能,并且我有一个创建地图的文档。地图由节点和边组成。 "节点" element描述了可用节点和" edge"连接给定节点:
<?xml version="1.0" encoding="UTF-8"?> <map>
<nodes>
<node id="1">
<x>1</x>
<y>0</y>
</node>
<node id="2">
<x>0</x>
<y>1</y>
</node>
<node id="3">
<x>1</x>
<y>1</y>
</node>
</nodes>
<edges>
<edge id="1">
<from>1</from>
<to>2</to>
</edge>
<edge id="2">
<from>2</from>
<to>3</to>
</edge>
<edge id="3">
<from>3</from>
<to>1</to>
</edge>
</edges>
</map>
在此片段中,定义了ID为1,2和3的节点,并将其与节点1-2,2-3和3-1之间的边连接。
有没有办法引用文档中定义的节点而不仅仅是提供ID?我看到一个答案暗示:
<edge id="1">
<from><xpath-ref select="../../../../nodes/node[@id='1']"/></from>
<to><xpath-ref select="../../../../nodes/node[@id='2']"/></to>
</edge>
...但是我无法在xpath-ref点之外进行解析:
In [2]: map = xml.dom.minidom.parse('map.xml')
In [3]: xpath.find('./map/edges/edge[@id=1]/from/xpath-ref', map)
Out[3]: [<DOM Element: xpath-ref at 0x1042fdfc8>]
在上面的代码中,我使用了py-dom-xpath。
例如我不能执行:
xpath.find('./map/edges/edge[@id=1]/from/xpath-ref/x', map)
或:
xpath.find(m.find("./edges/edge[@id='1']/from/xpath-ref").attrib['select'], x)
任何python XPath意大利面食者都可以帮忙吗? 谢谢! :)