Return the browse XML body.

        The XML is formed by adding, to the envelope of the XML returned by
        ``self._base_body``, the following ``Body`` part:

        .. code :: xml

         <s:Body>
           <getMetadata xmlns="http://www.sonos.com/Services/1.1">
             <id>root</id>
             <index>0</index>
             <count>100</count>
           </getMetadata>
         </s:Body>

        .. note:: The XML contains index and count, but the service does not
        seem to respect them, so therefore they have not been included as
        arguments.

def _browse_body(self, search_id):
        """Return the browse XML body.

        The XML is formed by adding, to the envelope of the XML returned by
        ``self._base_body``, the following ``Body`` part:

        .. code :: xml

         <s:Body>
           <getMetadata xmlns="http://www.sonos.com/Services/1.1">
             <id>root</id>
             <index>0</index>
             <count>100</count>
           </getMetadata>
         </s:Body>

        .. note:: The XML contains index and count, but the service does not
        seem to respect them, so therefore they have not been included as
        arguments.
        """
        xml = self._base_body()

        # Add the Body part
        XML.SubElement(xml, 's:Body')
        item_attrib = {
            'xmlns': 'http://www.sonos.com/Services/1.1'
        }
        search = XML.SubElement(xml[1], 'getMetadata', item_attrib)
        XML.SubElement(search, 'id').text = search_id
        # Investigate this index, count stuff more
        XML.SubElement(search, 'index').text = '0'
        XML.SubElement(search, 'count').text = '100'

        return XML.tostring(xml)