基本概念
XmlParser
XmlParser 提供了解析和提取 XML 文档中的数据的功能。
使用 XmlParser
要解析 xml 文档,首先使用 ParserEvent 处理程序实例化该类。
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 方法,将要解析的数据传递给它。
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
构造函数
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()
xmlParser.parse(xmlString: string)
解析提供的 xml 字符串。
ParserEvent
解析器事件数据对象具有以下属性。
eventType
const eventType: ParserEventType = event.eventType
返回解析器事件的类型。参见 ParserEventType
position
const position: Position = event.position
返回在 xml 字符串中生成事件的位置(列号和行号)。
prefix
const prefix: Position = event.prefix
如果 启用了命名空间处理,则在 eventType 为 ParserEventType.StartElement
或 ParserEventType.EndElement
时返回元素的前缀。
namespace
如果 启用了命名空间处理,则在 eventType 为 ParserEventType.StartElement
或 ParserEventType.EndElement
时返回元素的命名空间。
elementName
在 eventType 为 ParserEventType.StartElement
或 ParserEventType.EndElement
时返回元素的名称。
attributes
在 eventType 为 ParserEventType.StartElement
时返回一个包含元素属性的 JSON 对象。
data
在 eventType 为 ParserEventType.Text
、ParserEventType.CDATA
或 ParserEventType.Comment
时返回相关数据。
toString()
返回此实例的 JSON 字符串表示形式。
ParserEventType
以下是可用的解析器事件类型
StartElement
指定 StartElement 事件类型。
EndElement
指定 EndElement 事件类型。
ParserEventType.Text
指定 Text 事件类型。
ParserEventType.CDATA
指定 CDATA 事件类型。
ParserEventType.Comment
指定 Comment 事件类型。