8.7 发布—WinterCG 合规性 第 1 部分
了解更多

XmlParser 提供了解析和提取 XML 文档中的数据的功能。

使用 XmlParser

要解析 xml 文档,首先使用 ParserEvent 处理程序实例化该类。

ts
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;
    }
  }

然后,在实例上调用 parse 方法,将要解析的数据传递给它。

ts
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

构造函数

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

创建 XmlParser 类的新的实例。

  • onEvent 是在发生解析器事件时要执行的回调。

  • 可选: onError 是在发生解析器错误时要执行的回调。error 参数包含错误,而 position 表示解析错误的位置。

  • 可选: processNamespaces 指定是否应该处理命名空间。


parse()

ts
xmlParser.parse(xmlString: string)

解析提供的 xml 字符串。


ParserEvent

解析器事件数据对象具有以下属性。

eventType

ts
const eventType: ParserEventType = event.eventType

返回解析器事件的类型。参见 ParserEventType


position

ts
const position: Position = event.position

返回在 xml 字符串中生成事件的位置(列号和行号)。


prefix

ts
const prefix: Position = event.prefix

如果 启用了命名空间处理,则在 eventType 为 ParserEventType.StartElementParserEventType.EndElement 时返回元素的前缀。


namespace

ts

如果 启用了命名空间处理,则在 eventType 为 ParserEventType.StartElementParserEventType.EndElement 时返回元素的命名空间。


elementName

在 eventType 为 ParserEventType.StartElementParserEventType.EndElement 时返回元素的名称。


attributes

在 eventType 为 ParserEventType.StartElement 时返回一个包含元素属性的 JSON 对象。


data

在 eventType 为 ParserEventType.TextParserEventType.CDATAParserEventType.Comment 时返回相关数据。


toString()

返回此实例的 JSON 字符串表示形式。


ParserEventType

以下是可用的解析器事件类型

StartElement

指定 StartElement 事件类型。


EndElement

指定 EndElement 事件类型。


ParserEventType.Text

指定 Text 事件类型。


ParserEventType.CDATA

指定 CDATA 事件类型。


ParserEventType.Comment

指定 Comment 事件类型。