# sasdata.dataloader.readers.xml_reader module

Generic XML read and write utility

Usage: Either extend xml_reader or add as a class variable.

class sasdata.dataloader.readers.xml_reader.XMLreader(xml=None, schema=None)

  Bases: `FileReader`

  Generic XML read and write class. Mostly helper functions. Makes reading/writing XML a bit easier than calling lxml libraries directly.

  Dependencies:

    This class requires lxml 2.3 or higher.

  append(element, tree)

    Append an etree Element to an ElementTree.

    Parameters:

      - element – etree Element to append

      - tree – ElementTree object to append to

  break_processing_instructions(string, dic)

    Method to break a processing instruction string apart and add to a dict

    Parameters:

      - string – A processing instruction as a string

      - dic – The dictionary to save the PIs to

  create_element(name, attrib=None, nsmap=None)

    Create an XML element for writing to file

    Parameters:

      name – The name of the element to be created

  create_element_from_string(xml_string)

    Create an element from an XML string

    Parameters:

      xml_string – A string of xml

  create_tree(root)

    Create an element tree for processing from an etree element

    Parameters:

      root – etree Element(s)

  ebuilder(parent, elementname, text=None, attrib=None)

    Use lxml E builder class with arbitrary inputs.

    Parameters:

      - parnet – The parent element to append a child to

      - elementname – The name of the child in string form

      - text – The element text

      - attrib – A dictionary of attribute names to attribute values

  encoding = None
  find_invalid_xml()

    Finds the first offending element that should not be present in XML file

  parse_schema_and_doc()

    Creates a dictionary of the parsed schema and xml files.

  processing_instructions = None
  reader()

    Read in an XML file into memory and return an lxml dictionary

  return_processing_instructions()

    Get all processing instructions saved when loading the document

    Parameters:

      tree – etree.ElementTree object to write PIs to

  schema = None
  schemadoc = None
  set_encoding(attr_str)

    Find the encoding in the xml declaration and save it as a string

    Parameters:

      attr_str – All attributes as a string e.g. “foo1=”bar1” foo2=”bar2” foo3=”bar3” … foo_n=”bar_n””

  set_processing_instructions()

    Take out all processing instructions and create a dictionary from them If there is a default encoding, the value is also saved

  set_schema(schema)

    Set the schema file and parse

  set_xml(xml: str) → None

    Generic method that routes xml based on string contents :param xml: A string that can either be a filepath, URL, or XML string.

  to_string(elem, pretty_print=False, encoding=None)

    Converts an etree element into a string

  validate_xml()

    Checks to see if the XML file meets the schema

  write_attribute(elem, attr_name, attr_value)

    Write attributes to an Element

    Parameters:

      - elem – etree.Element object

      - attr_name – attribute name to write

      - attr_value – attribute value to set

  write_text(elem, text)

    Write text to an etree Element

    Parameters:

      - elem – etree.Element object

      - text – text to write to the element

  xml = None
  xmldoc = None
  xmlroot = None

sasdata.dataloader.readers.xml_reader.uri_is_valid(x)

  Check if a URI string is valid