我在python中通过untangle
解析XML文件,并将内容写入数据库。
对于不同的标签,子标签的内容将是不同的。例如,第一个事件标记将party标记作为子标记,但第二个事件标记没有。
- >在解析之前,如何检查标签是否存在?
目前,我的代码会针对非现有派对代码抛出错误,并设置None
AttributeError: 'NoneType' object has no attribute 'Title'
答案 0 :(得分:0)
根据解缠github的方法,一种替代方法是在您将永远存在的节点中使用dir
。示例(来自他们的github中的问题):
>>> x = untangle.parse('<doc><node-with-title><title>test</title></node-with-title><node-no-title></node-no-title></doc>')
>>> dir(x.doc.node_with_title)
[u'title']
>>> dir(x.doc.node_no_title)
[]
>>> 'title' in dir(x.doc.node_with_title)
True
>>> 'title' in dir(x.doc.node_no_title)
False
答案 1 :(得分:-1)
<Program programId="c fragmentVersion="14755725670045441" >
<Description>
<ShortTitle xml:lang="en-US" length="9">Max Steel</ShortTitle>
<Synopsis xml:lang="en-US" length="short">The adventures of .</Synopsis>
<Synopsis xml:lang="en-US" length="medium">The adventures bo-charged superhero</Synopsis>
<CreditsList>
<CreditsItem role="urn:eventis:metadata:cs:RoleCS:2010:CONTENT-PROVIDER">
<OrganizationName xml:lang="en-US">SeaChange</OrganizationName>
</CreditsItem>
<CreditsItem role="urn:eventis:metadata:cs:RoleCS:2010:CONTENT-PROVIDER-ID">
<OrganizationName xml:lang="en-US">seachange.com</OrganizationName>
</CreditsItem>
</CreditsList>
<RelatedMaterial>
<HowRelated href="urn:eventis:metadata:cs:HowRelatedCS:2010:poster"/>
<MediaLocator>
<MediaUri xmlns="udoster.jpg</MediaUri>
</MediaLocator>
</RelatedMaterial>
<RelatedMaterial>
<HowRelated href="urn:eventis:metadata:cs:HowRelatedCS:2010:boxCover"/>
<MediaLocator>
<MediaUri xmlns="urn:tva:mpeg7:2008">dover.jpg</MediaUri>
</MediaLocator>
</RelatedMaterial>
<ProductionDate>
<TimePoint>2016</TimePoint>
</ProductionDate>
<Duration>22110</Duration>
</Description>
</Program>