def as_xml(self,
               include_list_data=True,
               include_field_definitions=True,
               **kwargs):
        list_element = OUT('list', name=self.name, id=self.id)

        if include_field_definitions:
            fields_element = OUT('fields')
            for field in self.fields.values():
                field_element = OUT('field',
                                    name=field.name,
                                    display_name=field.display_name,
                                    sharepoint_type=field.sharepoint_type,
                                    type=field.type_name,
                                    **field.extra_field_definition())
                if field.description:
                    field_element.attrib['description'] = field.description
                field_element.attrib[
                    'multi'] = 'true' if field.multi else 'false'
                fields_element.append(field_element)
            list_element.append(fields_element)

        if include_list_data:
            rows_element = OUT('rows')
            for row in self.rows:
                rows_element.append(row.as_xml(**kwargs))
            list_element.append(rows_element)
        return list_element
 def as_xml(self, transclude_xml=False, **kwargs):
     fields_element = OUT('fields')
     row_element = OUT('row', fields_element, id=text_type(self.id))
     for field in self.fields.values():
         try:
             data = self._data[field.name]
         except KeyError:
             pass
         else:
             fields_element.append(field.as_xml(self, data, **kwargs))
     if transclude_xml and self.is_file and self._data.get(
             'DocIcon') == 'xml':
         try:
             content = etree.parse(self.open()).getroot()
         except HTTPError:
             content_element = OUT('content', missing='true')
         else:
             content_element = OUT('content', content)
         row_element.append(content_element)
     return row_element