def parser_hello(
        xml_tree: etree.ElementTree) -> wsd_discovery__structures.HelloMessage:
    o = wsd_discovery__structures.HelloMessage()
    header = wsd_common.get_header_tree(xml_tree)
    o.message_id = wsd_common.get_xml_str(header, ".//wsa:MessageID")
    o.relates_to = wsd_common.get_xml_str(header, ".//wsa:RelatesTo")
    o.app_sequence = get_sequence(header)
    body = wsd_common.get_body_tree(xml_tree)
    o.ts = parser_target(body)
    return o
def parser_resolve_match(
    xml_tree: etree.ElementTree
) -> wsd_discovery__structures.ResolveMatchesMessage:
    o = wsd_discovery__structures.ResolveMatchesMessage()
    header = wsd_common.get_header_tree(xml_tree)
    o.message_id = wsd_common.get_xml_str(header, ".//wsa:MessageID")
    o.relates_to = wsd_common.get_xml_str(header, ".//wsa:RelatesTo")
    o.to = wsd_common.get_xml_str(header, ".//wsa:To")
    o.app_sequence = get_sequence(header)
    body = wsd_common.get_body_tree(xml_tree)
    match = wsd_common.xml_findall(body, "wsd:ResolveMatches/wsd:ResolveMatch")
    if match is not None:
        o.ts = parser_target(body)
    return o
def parser_probe_match(
    xml_tree: etree.ElementTree
) -> wsd_discovery__structures.ProbeMatchesMessage:
    o = wsd_discovery__structures.ProbeMatchesMessage()
    header = wsd_common.get_header_tree(xml_tree)
    o.message_id = wsd_common.get_xml_str(header, ".//wsa:MessageID")
    o.relates_to = wsd_common.get_xml_str(header, ".//wsa:RelatesTo")
    o.to = wsd_common.get_xml_str(header, ".//wsa:To")
    o.app_sequence = get_sequence(header)
    body = wsd_common.get_body_tree(xml_tree)
    matches = wsd_common.xml_findall(body, "wsd:ProbeMatches/wsd:ProbeMatch")
    for match in matches:
        o.matches.append(parser_target(match))
    return o
def parser_target(
        xml_tree: etree.ElementTree
) -> wsd_discovery__structures.TargetService:
    o = wsd_discovery__structures.TargetService()
    o.ep_ref_addr = wsd_common.get_xml_str(
        xml_tree, ".//wsa:EndpointReference/wsa:Address")
    o.types = wsd_common.get_xml_str_set(xml_tree, ".//wsd:Types")
    o.scopes = wsd_common.get_xml_str_set(xml_tree, ".//wsd:Scopes")
    o.xaddrs = wsd_common.get_xml_str_set(xml_tree, ".//wsd:XAddrs")
    o.metadata_version = wsd_common.get_xml_int(xml_tree,
                                                ".//wsd:MetadataVersion")
    return o