查看源代码 xmerl_scan (xmerl v2.1)

单遍 XML 扫描器。

此模块是 XML 解析器的接口,它处理 XML 1.0。XML 解析器通过 xmerl_scan:string/[1,2]xmerl_scan:file/[1,2] 激活。它返回在 xmerl.hrl 中定义的类型的记录。

另请参阅 “自定义函数”教程

概要

类型

一个 XML 文档。

扫描器的全局状态,由 #xmerl_scanner{} 记录表示。

选项允许自定义扫描器的行为。另请参阅 “自定义函数”教程

记录 #xmlDocument{}

记录 #xmlElement{}

函数

累积并规范化空格。

获取 ContinuationState

设置 ContinuationState,用于延续函数中。

获取 EventState

设置 EventState,用于事件函数中。

获取 FetchState

设置 FetchState,用于获取函数中。

解析包含 XML 文档的文件

获取 HookState

设置 HookState,用于钩子函数中。

获取 RulesState

设置 RulesState,用于规则函数中。

解析包含 XML 文档的字符串

获取 UserState

设置 UserState,用于用户函数中。

类型

-type document() :: xmlElement() | xmlDocument().

一个 XML 文档。

xmerl_scan:string/[1,2]xmerl_scan:file/[1,2] 返回的文档。返回的记录类型取决于传递给函数的 document 选项的值。

链接到此类型

global_state()

查看源代码 (未导出)
-type global_state() :: xmerl_scanner().

扫描器的全局状态,由 #xmerl_scanner{} 记录表示。

链接到此类型

option_list()

查看源代码 (未导出)
-type option_list() :: [{atom(), term()} | {atom(), fun(), term()} | {atom(), fun(), fun(), term()}].

选项允许自定义扫描器的行为。另请参阅 “自定义函数”教程

可能的选项是

{acc_fun, Fun}
回调函数,用于累积实体的内容。
{continuation_fun, Fun} | {continuation_fun, Fun, ContinuationState}
回调函数,用于决定如果扫描器在文档完成之前遇到 EOF 时该怎么做。
{event_fun, Fun} | {event_fun, Fun, EventState}
回调函数,用于处理扫描器事件。
{fetch_fun, Fun} | {fetch_fun, Fun, FetchState}
回调函数,用于获取外部资源。
{hook_fun, Fun} | {hook_fun, Fun, HookState}
回调函数,用于处理已识别的文档实体。
{close_fun, Fun}
当文档已完全解析时调用。
{rules, ReadFun, WriteFun, RulesState} | {rules, Rules}
处理解析时扫描器信息的存储。
{user_state, UserState}
可从所有自定义函数访问的全局状态变量
{fetch_path, PathList}
PathList 是获取文件时要搜索的目录列表。如果相关文件不在 fetch_path 中,则 URI 将用作文件名。
{space, Flag}
preserve (默认)保留空格,normalize 累积连续空格并将其替换为一个空格。
{line, Line}
指定扫描包含 XML 片段的文档的起始行。
{namespace_conformant, Flag}
控制是否表现为符合命名空间的 XML 解析器,false(默认)表示否,否则为 true
{validation, Flag}
控制是否作为验证 XML 解析器处理:off (默认)不进行验证,或者通过 DTD 进行 dtd 验证,或者通过 XML Schema 进行 schema 验证。falsetrue 选项已过时(即,它们可能会在未来的版本中删除),如果使用,false 等于 offtrue 等于 dtd
{schemaLocation, [{Namespace,Link}|...]}
明确告知要使用哪个 XML Schema 文档来验证 XML 文档。与 {validation,schema} 选项一起使用。
{quiet, Flag}
如果 Xmerl 应静默运行且不向标准输出输出任何信息,则设置为 true(默认 false)。
{doctype_DTD, DTD}
允许在 XML 文档中不可用时指定 DTD 名称。此选项仅在与 {validation,dtd} 选项一起使用时才有效。
{xmlbase, Dir}
XML 基本目录。如果使用 string/1,则默认值为当前目录。如果使用 file/1,则默认值为给定文件的目录。
{encoding, Enc}
设置使用的默认字符集(默认 UTF-8)。仅当 XML 声明中未明确给出此字符集时才使用此字符集。
{document, Flag}
如果 Xmerl 应将完整的 XML 文档作为 xmlDocument 记录返回,则设置为 true(默认 false)。
{comments, Flag}
如果 Xmerl 应跳过注释,则设置为 false,否则将作为 xmlComment 记录返回(默认 true)。
{default_attrs, Flag}
如果 Xmerl 应将缺少属性且具有定义的默认值的属性添加到元素,则设置为 true(默认 false)。
{allow_entities, Flag}
如果 XML 文档中存在 ENTITY 声明,则设置为 true,如果 xmerl_scan 不应失败(默认 false)。
链接到此类型

xmlDocument()

查看源代码 (未导出)
-type xmlDocument() :: xmerl:xmlDocument().

记录 #xmlDocument{}

记录定义在 xmerl.hrl 中找到。

-type xmlElement() :: xmerl:xmlElement().

记录 #xmlElement{}

记录定义在 xmerl.hrl 中找到。

函数

链接到此函数

accumulate_whitespace/4

查看源代码
-spec accumulate_whitespace(Text, global_state(), How, Acc) -> {NewAcc, NewText, global_state()}
                               when
                                   Text :: string(),
                                   How :: preserve | normalize,
                                   Acc :: string(),
                                   NewAcc :: string(),
                                   NewText :: string().

累积并规范化空格。

-spec cont_state(global_state()) -> ContinuationState when ContinuationState :: term().

获取 ContinuationState

请参阅 “自定义函数”教程

-spec cont_state(ContState :: term(), global_state()) -> global_state().

设置 ContinuationState,用于延续函数中。

当解析器遇到字节流的末尾时,将调用延续函数。请参阅 “自定义函数”教程

-spec event_state(global_state()) -> EventState when EventState :: term().

获取 EventState

请参阅 “自定义函数”教程

-spec event_state(EventState :: term(), global_state()) -> global_state().

设置 EventState,用于事件函数中。

在解析实体的开头和结尾调用事件函数。请参阅 “自定义函数”教程

-spec fetch_state(global_state()) -> FetchState when FetchState :: term().

获取 FetchState

请参阅 “自定义函数”教程

-spec fetch_state(FetchState :: term(), global_state()) -> global_state().

设置 FetchState,用于获取函数中。

当解析器获取外部资源(例如 DTD)时,将调用获取函数。请参阅 “自定义函数”教程

-spec file(Filename :: string()) -> {xmlElement(), Rest} | {error, Reason}
              when Rest :: string(), Reason :: term().

等效于 file(Filename, [])

-spec file(Filename :: string(), option_list()) -> {document(), Rest} | {error, Reason}
              when Rest :: string(), Reason :: term().

解析包含 XML 文档的文件

-spec hook_state(global_state()) -> HookState when HookState :: term().

获取 HookState

请参阅 “自定义函数”教程

-spec hook_state(HookState :: term(), global_state()) -> global_state().

设置 HookState,用于钩子函数中。

当解析器已解析完完整实体时,将调用钩子函数。请参阅 “自定义函数”教程

-spec rules_state(global_state()) -> RulesState when RulesState :: term().

获取 RulesState

请参阅 “自定义函数”教程

-spec rules_state(RulesState :: term(), global_state()) -> global_state().

设置 RulesState,用于规则函数中。

当解析器将扫描器信息存储在规则数据库中时,将调用规则函数。请参阅 “自定义函数”教程

-spec string(Text :: string()) -> {xmlElement(), Rest} when Rest :: string().

等效于 string(Text, [])

-spec string(Text :: string(), option_list()) -> {document(), Rest} when Rest :: string().

解析包含 XML 文档的字符串

-spec user_state(global_state()) -> UserState when UserState :: term().

获取 UserState

请参阅 “自定义函数”教程

链接到此函数

user_state(UserState, G)

查看源代码
-spec user_state(UserState :: term(), G :: global_state()) -> global_state().

设置 UserState,用于用户函数中。

请参阅 “自定义函数”教程