WSDAPI XML 类型字节码

WSDAPI 使用这些字节码通过描述复杂类型的字节码表来分析和生成 XML。

类型的字节码表表示二进制 (内存中) 和 XML (该类型的在线) 表示形式。 字节码表由由特殊操作终止的操作列表组成,即 OpEndOfTable。 操作由一个单字节操作代码组成,后跟零个或多个字节的参数数据。

字节 码 说明
OpNone 不匹配任何内容。
OpEndOfTable 指示字节码表的末尾。
OpBeginElement (名称) 将元素开始标记与指定的名称匹配。 名称以 4 字节编码形式显示在表中。 OnBeginElement 启动以匹配的 OpEndElement 结尾的 子句。 OpBeginElement 与其匹配的 OpEndElement 之间必须出现零个或多个完整子句。
OpBeginAnyElement 将元素开始标记与任何名称匹配。 OnBeginAnyElement 启动以匹配的 OpEndElement 结尾的子句。 OpBeginAnyElement 与其匹配的 OpEndElement 之间必须出现零个或多个完整子句。
OpEndElement 结束以 OpBeginElement 或 OpBeginAnyElement 开头的子句。
OpElement (名称) 匹配具有指定名称的整个元素。 名称以 4 字节编码形式显示在表中。
OpAnyElement 匹配具有任意名称的整个元素。
OpAnyElements 匹配具有任意名称的任意数量的元素。
OpAnyText 匹配文本标记。
OpAttribute (名称) 匹配具有指定名称的属性的标签标记。 OpAttribute 启动一个子句,该子句包含表中的后续子句。 后续子句用于匹配 属性的值部分。 OpAttribute 子句始终出现在 OpBeginElement 或 OpBeginAnyElement 操作之后或另一个 OpAttribute 子句之后。
OpBeginChoice OpBeginChoice 启动以匹配的 OpEndChoice 结尾的 子句。 OpBeginChoice 与其匹配的 OpEndChoice 之间必须出现零个或多个完整子句。 外部子句与任何一个内部子句匹配的标记匹配。 所有内部子句都必须以 OpBeginElement 开头,但最后一个子句可以是 OpAnything。 此构造对应于 XSD 选择粒子。
OpEndChoice 结束以 OpBeginChoice 开头的子句。
OpBeginSequence OpBeginSequence 启动以匹配的 OpEndSequence 结尾的子句。 OpBeginSequence 和 OpEndSequence 之间必须出现零个或多个完整子句。 外部子句匹配序列中所有内部子句匹配的标记。 此构造对应于 XSD 序列粒子。
OpEndSequence 结束以 OpBeginSequence 开头的子句。
OpBeginAll OpBeginAll 启动以匹配的 OpEndAll 结尾的 子句。 OpBeginAll 和 OpEndAll 之间必须出现零个或多个完整子句。 外部子句与任何序列中的内部子句匹配的标记匹配。 与每个内部子句相关的 Occurrence 运算符指示每个子句的标记可能发生的次数。 默认值为一次。 指定子句的多次出现可能与其他内部子句的出现混杂在一起。 所有内部子句都必须以 OpBeginElement 开头,但最后一个子句可以是 OpAnything。 此构造对应于 XSD 所有粒子。
OpEndAll 结束以 OpBeginAll 开头的子句。
OpAnything 匹配任意数量的元素和文本标记。
OpAnyNumber 指示后续子句可能发生任意次数。 OpAnyNumber 启动一个子句,该子句在后续子句的末尾终止。
OpOneOrMore 指示后续子句可能出现一次或多次。 OpOneOrMore 启动一个子句,该子句在后续子句的末尾终止。
OpOptional 指示后续子句可能出现零次或一次。 OpOptional 启动一个在后续子句末尾终止的子句。
OpFormatInt8 (type,field) 匹配文本标记中的 8 位有符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatInt8 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatInt16 (type,field) 匹配 16 位带符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatInt16 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatInt32 (type,field) 匹配文本标记中的 32 位有符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatInt32 宏计算指定类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatInt64 (type,field) 匹配文本标记中的 64 位有符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatInt64 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatUInt8 (type,field) 匹配文本标记中的 8 位无符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatUInt8 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatUInt16 (type,field) 匹配文本标记中的 16 位无符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatUInt16 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatUInt32 (type,field) 匹配文本标记中的 32 位无符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatUInt32 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatUInt64 (type,field) 匹配文本标记中的 64 位无符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatUInt64 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatUnicodeString (type,field) 匹配由文本标记的整个值组成的字符串。 4 字节偏移量参数指示指向字符串的指针出现在当前二进制上下文中的偏移量。 OpFormatUnicodeString 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatDom (type,field) 指示后续子句匹配的所有 XML 都以二进制形式表示为 DOM () WSDXML_NODE结构列表。 OpFormatDom 启动一个子句,该子句在后续子句的末尾终止。 4 字节偏移量参数指示指向第一个WSDXML_NODE的指针出现在当前二进制上下文中的偏移量。 OpFormatDom 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatStruct (structType,type,field) 指示后续子句的二进制上下文是由当前二进制上下文引用的结构。 OpFormatStruct 启动在后续子句末尾终止的子句。 两个 4 字节参数中的第一个指示结构的大小。 第二个参数指示指向 结构的指针出现在当前二进制上下文中的偏移量。 OpFormatStruct 宏计算 (structType) 指示的结构类型的大小,并提供大小作为第一个参数。 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为第二个参数。
OpFormatUri (type,field) 匹配文本令牌中的 URI。 4 字节偏移量参数指示指向 URI 字符串的指针出现在当前二进制上下文中的偏移量。 OpFormatUri 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatUuidUri (type,field) 匹配文本令牌中的 UUID 协议 URI。 4 字节偏移量参数指示 GUID 结构格式的 URI 出现在当前二进制上下文中的偏移量。 OpFormatUuidUri 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatName (type,field) 匹配文本标记中的限定名称。 4 字节偏移量参数指示指向限定名称 (WSDXML_NAME结构) 出现在当前二进制上下文中的偏移量。 OpFormatName 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatListInsertTail (nodeType,type,field) 指示后续子句的所有匹配项的二进制上下文都是当前二进制上下文引用的单独链接列表中的结构。 OpFormatListInsertTail 启动在后续子句末尾终止的子句。 两个 4 字节参数中的第一个指示结构的大小。 第二个参数指示指向 结构的指针出现在当前二进制上下文中的偏移量。 将结构链接到列表中的“next”指针始终是结构中的第一个字段。 OpFormatListInsertTail 宏计算 (nodeType) 指示的结构类型的大小,并提供大小作为第一个参数。 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为第二个参数。
OpFormatType (typetable,type,field) 匹配指示的类型表匹配的标记,并指示该表的二进制上下文嵌入当前二进制上下文中的指定偏移量。 两个 4 字节参数中的第一个是对类型表的编码引用。 第二个参数是偏移量。 OpFormatType 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatDynamicType (name,type,field) 匹配使用指示的名称动态获取的类型表匹配的标记,并指示该表的二进制上下文嵌入当前二进制上下文中的指定偏移量。 两个 4 字节参数中的第一个是标识类型表的名称。 通常,此名称以单引号字符串(如“body'”)的形式指定,该字符串生成 4 字节值。 第二个参数是偏移量。 OpFormatDynamicType 宏计算指定类型中指示字段的偏移量,并提供该偏移量作为参数。
OpFormatLookupType (urifield,type,field) 匹配在当前二进制上下文中的指定偏移处由 URI 标识的类型表所匹配的标记,并指示该表的二进制上下文嵌入当前二进制上下文中的指定偏移量。 两个 4 字节参数中的第一个是当前二进制上下文中类型 URI 的偏移量。 第二个参数是新二进制上下文的偏移量。 OpFormatLookupType 宏计算所指示类型中指定字段的偏移量,并提供该偏移量作为参数。
OpProcess (type,field) 将引用的字段标记为需要在生成和分析阶段进行其他处理。 这用于无法自动处理的复杂字段。