首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用untangle,如何在解析之前检查XML中是否存在属性和标记?

使用untangle,如何在解析之前检查XML中是否存在属性和标记?
EN

Stack Overflow用户
提问于 2016-11-30 19:10:48
回答 2查看 814关注 0票数 1

我在python中通过untangle解析XML文件,并将内容写入数据库。

子标签的内容对于不同的标签是不同的。例如,第一个事件标记将party标记作为子标记,而第二个事件标记则没有。

-->如何在解析前检查标签是否存在?目前,我的代码为不存在的party标记抛出一个错误,并设置了一个None

代码语言:javascript
复制
AttributeError: 'NoneType' object has no attribute 'Title'
EN

回答 2

Stack Overflow用户

发布于 2020-10-08 13:04:43

根据untangle github的说法,一种替代方案是在您知道将一直存在的节点中使用dir。示例(来自其github中的问题):

代码语言:javascript
复制
>>> 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

来源:https://github.com/stchris/untangle/issues/37

票数 0
EN

Stack Overflow用户

发布于 2016-11-30 20:48:25

代码语言:javascript
复制
        <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>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40886848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档