Tester si les enfants balise existe dans beautifulsoup

j'ai un fichier XML avec une structure définie, mais un nombre différent de balises, comme

file1.xml:

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

file2.xml:

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

Maintenant, je voudrais vérifier, si la balise myId sorties. J'ai donc fait la suivante:

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)

Le résultat est pour
file1.xml:

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

file2.xml:

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

Bon, <myId> n'est pas un attribut de <subdoc>.

Mais comment je peux tester si une sous-balise existe?

//Edit: En passant: je n'aime pas vraiment l'itération par l'ensemble de la subdoc, parce que ce sera très lent. J'espère trouver un chemin où je peux l'adresse directe/demander à cet élément.

OriginalL'auteur The Bndr | 2015-10-20