text: # coding: utf-8
  #
  
  try:
      from lxml import etree
      LXML = True
  except:
      import xml.etree.ElementTree as ET
      LXML = False
  
  
  def safe_xmlstr(s):
      return s.replace("$", "-")
  
  
  def xpath_findall(xpath, xml_content):
      """
      Search xml by xpath
  
      Returns:
          List of Element [Element...]
      """
      if LXML:
          # print(xml_content)
          root = etree.fromstring(xml_content.encode('utf-8'))
          for node in root.xpath("//node"):
              node.tag = safe_xmlstr(node.attrib.pop("class"))
          return root.xpath(xpath)
      else:
          root = ET.fromstring(xml_content)
          for node in root.findall(".//node"):
              node.tag = safe_xmlstr(node.attrib.pop("class"))
          return root.findall(xpath if xpath.startswith(".") else "." + xpath)
  