Skip to content

Latest commit

 

History

History
211 lines (140 loc) · 4.51 KB

xml-parser.md

File metadata and controls

211 lines (140 loc) · 4.51 KB
title
XmlParser

The XMLParser provides the ability to parse and extract data from XML documents.

Using XmlParser

To parse an xml document, first institiate the class with the ParserEvent handler.

const xmlParser = new XmlParser(this.onEventCallback);

onEventCallback(event: ParserEvent) {
    switch (event.eventType) {

      case ParserEventType.StartElement:

        if (event.attributes) {
          for (const attributeName in event.attributes) {
            if (event.attributes.hasOwnProperty(attributeName)) {
              console.log({
                eventType: event.eventType,
                elementName: event.elementName,
                attributeName: attributeName,
                result: event.attributes[attributeName],
                significantText: null,
              });
            }
          }
        } else {
          console.log({
            eventType: event.eventType,
            elementName: event.elementName,
            attributeName: null,
            result: null,
            significantText: null,
          });
        }
        break;
      case ParserEventType.EndElement:

        console.log({
          eventType: event.eventType,
          elementName: event.elementName,
          attributeName: null,
          result: null,
          significantText: null,
        });
        break;

      case ParserEventType.Text:
        const significantText = event.data.trim();

        if (significantText !== '') {
          console.log({
            eventType: event.eventType,
            elementName: null,
            attributeName: null,
            result: null,
            significantText: significantText,
          });
        }
        break;
      default:
        break;
    }
  }

Then call the parse method on the instance passing it the data to be parsed.

xmlParser.parse(`
  <Document>
    <First attr1=\ "attribute1\" attr2=\ "attribute2\">I am first</First>
    <Second>I am second</Second>
    <Third>
      <FirstChild attr3=\ "attribute3\"></FirstChild>
    </Third>
  </Document>
`)

XmlParser API

constructor

const xmlParser = new XmlParser(onEvent: (event: ParserEvent) => void, onError?: (error: Error, position: Position) => void, processNamespaces?: boolean, angularSyntax?: boolean)

Creates a new instance of the XmlParser class.

  • onEvent is the callback to execute when a parser event occurs.

  • Optional: onError is the callback to execute when a parser error occurs. The error parameter contains the error and the position represents the position of the parsing error.

  • Optional: processNamespaces specifies whether namespaces should be processed.


parse()

xmlParser.parse(xmlString: string)

Parses the supplied xml string.


ParserEvent

The parser event data object has the following properties.

eventType

const eventType: ParserEventType = event.eventType

Returns the type of the parser event. See ParserEventType


position

const position: Position = event.position

Returns the position (column number and line number) in the xml string where the event was generated.


prefix

const prefix: Position = event.prefix

If namespace processing is enabled, returns the prefix of the element if the eventType is ParserEventType.StartElement or ParserEventType.EndElement.


namespace

If namespace processing is enabled, returns the namespace of the element if the eventType is ParserEventType.StartElement or ParserEventType.EndElement.


elementName

Returns the name of the element if the eventType is ParserEventType.StartElement or ParserEventType.EndElement.


attributes

Returns a JSON object with the attributes of an element if the eventType is ParserEventType.StartElement.


data

Returns the relevant data if the eventType is ParserEventType.Text, ParserEventType.CDATA or ParserEventType.Comment.


toString()

Returns a JSON string representation of this instance.


ParserEventType

The following are the available parser event types:

StartElement

Specifies the StartElement event type.


EndElement

Specifies the EndElement event type.


ParserEventType.Text

Specifies the Text event type.


ParserEventType.CDATA

Specifies the CDATA event type.


ParserEventType.Comment

Specifies the Comment event type.