我有一个XML文件,它有一个定义好的结构,但是有不同数量的标记,比如
文件1.xml:
<document>
<subDoc>
<id>1</id>
<myId>1</myId>
</subDoc>
</document>
文件2.xml:
<document>
<subDoc>
<id>2</id>
</subDoc>
</document>
现在我想检查一下标记myId
是否存在。所以我做了如下工作:
data = open("file1.xml",'r').read()
xml = BeautifulSoup(data)
hasAttrBs = xml.document.subdoc.has_attr('myID')
hasAttrPy = hasattr(xml.document.subdoc,'myID')
hasType = type(xml.document.subdoc.myid)
结果是为了 文件1.xml:
hasAttrBs -> False
hasAttrPy -> True
hasType -> <class 'bs4.element.Tag'>
文件2.xml:
hasAttrBs -> False
hasAttrPy -> True
hasType -> <type 'NoneType'>
好的,<myId>
不是<subdoc>
的属性。
但是如果子标签存在,我如何测试呢?
//Edit:顺便说一句:我不太喜欢遍历整个子文档,因为那样会非常慢。我希望能找到一种方法来直接向那个元素发问。
下面是一个检查Instagram URL中是否存在h2标记的示例。希望你觉得有用:
如果不知道XML文档的结构,可以使用soup的
.find()
方法。像这样的:如果您确实知道这个结构,那么可以通过将标记名作为类似于
xml.document.subdoc.myid
的属性访问来获得所需的元素。所以整件事都是这样的:印刷品
相关问题 更多 >
编程相关推荐