Parsing XML with double nested tags using mindom I want to retrieve id and name per skill. It works but is it well done? I would like to stay with minidom but all advices will be appreciated.

# This is only part of XML that interesting me:
# &lt;skill&gt;
#   &lt;id&gt;14&lt;/id&gt;
#   &lt;skill&gt;
#     &lt;name&gt;C++&lt;/name&gt;
#   &lt;/skill&gt;
# &lt;/skill&gt;
# &lt;skill&gt;
#   &lt;id&gt;15&lt;/id&gt;
#   &lt;skill&gt;
#     &lt;name&gt;Java&lt;/name&gt;
#   &lt;/skill&gt;
# &lt;/skill&gt;

skills = document.getElementsByTagName('skill')

for skill in skills:
    try:
        id_ = skill.getElementsByTagName('id')[0].firstChild.nodeValue
        name = skill.getElementsByTagName('name')[0].firstChild.nodeValue

        my_object.create(name=name.strip(),
                         id=id_.strip())
    except IndexError:
        pass
This is probably as good as you can get with minidom.
However, consider ditching minidom--it's really only there when you absolutely, postively need some kind of DOM api and only have the standard library. Note the documentation for minidom.

Users who are not already proficient with the DOM should consider using the xml.etree.ElementTree module for their XML processing instead
Warning: The xml.dom.minidom module is not secure against maliciously constructed data. If you need to parse untrusted or unauthenticated data see XML vulnerabilities.

XML in Python is almost always processed with the ElementTree interface, not a DOM interface. There are many implementations of ElementTree including xml.etree.ElementTree (pure Python, in stdlib) and xml.etree.cElementTree (CPython, in stdlib), and lxml (third-party all-singing, all-dancing xml processing library that uses libxml2).
Here is how I would do this:
try:
    # On Python 2.x, use the faster C implementation if available
    from xml.etree import cElementTree as ET
except ImportError:
    # pure-python fallback
    # In Python3 just use this, not the one above:
    # Python3 will automatically choose the fastest implementation available.
    from xml.etree import ElementTree as ET

xmlstr = &quot;&quot;&quot;&lt;root&gt;
&lt;skill&gt;
   &lt;id&gt;14&lt;/id&gt;
   &lt;name&gt;C++&lt;/name&gt;
 &lt;/skill&gt;
 &lt;skill&gt;
   &lt;id&gt;15&lt;/id&gt;
   &lt;name&gt;Java&lt;/name&gt;
 &lt;/skill&gt;
&lt;/root&gt;&quot;&quot;&quot;

root = ET.fromstring(xmlstr)

def get_subelem_texts(elem, subelems):
    &quot;&quot;&quot;Return {subelem: textval,...} or None if any subelems are missing (present but empty is ok)&quot;&quot;&quot;
    attrs = {}
    for sa in skillattrs:
        textval = skill.findtext(sa)
        if textval is None:
            return None
        attrs[sa] = textval.strip()
    return attrs


skillattrs = 'id name'.split()

for skill in root.find('skill'):
    args = get_subelem_texts(skill, skillattrs)
    if args is not None:
        my_object.create(**args)