如何引用/链接文档中的XML元素,然后使用python进行解析

时间:2015-07-28 13:50:54

标签: python xml xpath

我正在尝试理解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意大利面食者都可以帮忙吗? 谢谢! :)

0 个答案:

没有答案