'Converts xml response to service bus metrics objects
The xml format for MetricProperties
<entry>
<id>https://sbgm.windows.net/Metrics(\'listeners.active\')</id>
<title/>
<updated>2014-10-09T11:56:50Z</updated>
<author>
<name/>
</author>
<content type="application/xml">
<m:properties>
<d:Name>listeners.active</d:Name>
<d:PrimaryAggregation>Average</d:PrimaryAggregation>
<d:Unit>Count</d:Unit>
<d:DisplayName>Active listeners</d:DisplayName>
</m:properties>
</content>
</entry>
The xml format for MetricValues
<entry>
<id>https://sbgm.windows.net/MetricValues(datetime\'2014-10-02T00:00:00Z\')</id>
<title/>
<updated>2014-10-09T18:38:28Z</updated>
<author>
<name/>
</author>
<content type="application/xml">
<m:properties>
<d:Timestamp m:type="Edm.DateTime">2014-10-02T00:00:00Z</d:Timestamp>
<d:Min m:type="Edm.Int64">-118</d:Min>
<d:Max m:type="Edm.Int64">15</d:Max>
<d:Average m:type="Edm.Single">-78.44444</d:Average>
<d:Total m:type="Edm.Int64">0</d:Total>
</m:properties>
</content>
</entry>'

@staticmethod
def xml_to_metrics(xmlstr, object_type):

    xmldoc = minidom.parseString(xmlstr)
    return_obj = object_type()
    members = dict(vars(return_obj))
    for xml_entry in _MinidomXmlToObject.get_children_from_path(xmldoc, 'entry'):
        for node in _MinidomXmlToObject.get_children_from_path(xml_entry, 'content', 'properties'):
            for name in members:
                xml_name = _get_serialization_name(name)
                children = _MinidomXmlToObject.get_child_nodes(node, xml_name)
                if (not children):
                    continue
                child = children[0]
                node_type = child.getAttributeNS('http://schemas.microsoft.com/ado/2007/08/dataservices/metadata', 'type')
                node_value = _ServiceBusManagementXmlSerializer.odata_converter(child.firstChild.nodeValue, node_type)
                setattr(return_obj, name, node_value)
        for (name, value) in _MinidomXmlToObject.get_entry_properties_from_node(xml_entry, include_id=True, use_title_as_id=False).items():
            if (name in members):
                continue
            setattr(return_obj, name, value)
    return return_obj
