解析XML并在函数中抛出未知的键错误,但在命令提示符下工作

时间:2016-09-23 17:00:58

标签: python xml

我在Anaconda 4.1.1中运行Python 2.7.12。我安装了解开来解析一个非常复杂的XML文档。

这是我的代码:

import untangle

obj = untangle.parse('ear.xml')

for rd in obj.SaData.Session.Test.Data.RecordedData:
    tls = rd.Measured.TestLines
    tl = tls.Testline
    for line in tl:
        snl = line.SnLevel.cdata
        pn = line.PresentNoise.cdata
        print snl + " " + pn   

这将返回以下错误消息:

IndexError:未知密钥

但如果我立即从命令提示符运行tl = tls.Testline,我就不会收到任何错误。

要做一些简单的事情,但我是一个菜鸟,所以请帮助。

编辑:我无法附加文件,完全展开的XML太大,无法进入此处。我将尝试提供部分扩展的版本,以便了解文件的组织方式。

<SaData Version="2" xsi:schemaLocation="uuid:ee2fbfd9-47a5-4dc8-a9eb-42d9995802ab SaData.xsd">
<ClientInfo></ClientInfo>
<Session><Platform FirmwareVersion=""></Platform><Created>2016-09-21T11:08:58</Created>
<Changed>2016-09-21T11:08:58</Changed>
<Module Version="2.0.0.0">DPOAE</Module>
<ProtocolName>DP 2 - 10 kHz (8/octave)</ProtocolName>
<Settings></Settings>
<Test><TestName>DP-Gram</TestName>
<Settings></Settings>
<Data>
<RecordedData>
<Settings></Settings>
<Measured>
<Earside>Left</Earside>
<TestType>DPGram</TestType>
<Readonly>false</Readonly>
<PeakPressure>-5</PeakPressure>
<TestStatus>9</TestStatus>
<TestLines>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
<TestLine></TestLine>
</TestLines>
<TimeStamp>2016-09-19T12:28:11.7110965-05:00</TimeStamp><Duration>PT1M30S</Duration>
</Measured>
<Calculated></Calculated>
<PrivateData></PrivateData>
</RecordedData><
RecordedData></RecordedData>
</Data>
</Test>
</Session></SaData>

1 个答案:

答案 0 :(得分:0)

这是一个愚蠢的错字。我应该编写TestLine时写了Testline。很抱歉浪费每个人的时间。

Dessie