Test, wenn Kinder tag existiert in beautifulsoup

ich habe eine XML-Datei mit einer definierten Struktur, aber unterschiedlicher Anzahl von tags, wie

file1.xml:

<document>
  <subDoc>
    <id>1</id>
    <myId>1</myId>
  </subDoc>
</document>

file2.xml:

<document>
  <subDoc>
    <id>2</id>
  </subDoc>
</document>

Jetzt möchte ich überprüfen, wenn der tag myId beendet. Also habe ich Folgendes gemacht:

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)

Das Ergebnis ist für
file1.xml:

hasAttrBs -> False
hasAttrPy -> True
hasType ->   <class 'bs4.element.Tag'>

file2.xml:

hasAttrBs -> False
hasAttrPy -> True
hasType -> <type 'NoneType'>

Okay, <myId> ist nicht ein Attribut des <subdoc>.

Aber wie kann ich testen, ob ein sub-tag existiert?

//Edit: By the way: ich bin nicht wirklich mögen, zu iterieren durch die ganze subdoc, denn das wird sehr langsam sein. Hoffe ich finde einen Weg wo kann ich die direkte Adresse/bitten, dass element.

InformationsquelleAutor The Bndr | 2015-10-20
Schreibe einen Kommentar