使用XML SAX getValues()进行空控制

时间:2015-06-30 21:35:40

标签: python xml xml-parsing

我正在尝试解析以下xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
    <graph mode="static" defaultedgetype="directed">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        <node id="2" /> 
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" />
        <edge id="1" source="1" target="2" weight="2.0" />
        </edges>
    </graph>
</gexf>

可以看出一些边缘有重量,有些则没有。

我的代码如下:

elif name == "edge":
        u = attrs.getValue("source")
        v = attrs.getValue("target")
        w = attrs.getValue("weight")
        if w is not None:
            self.edgeweight = w

这里我希望w在第一行是None,在XML文件的第二行是2.0。相反,我得到的只是一个错误。控制它的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

get()方法就可以了。

w = attrs.get("weight")
            if w is not None:
                self.weighted = True
                self.edgeweight = float(w)

答案 1 :(得分:0)

请尝试以下操作。

if attrs.hasKey("weight"):
    w = attrs.getValue("weight")
    self.edgeweight = w

我使用this作为参考。它没有指定您是否可以使用"weight" in attrs,但您可以尝试查看它是否有效。