查看源码 xmerl_eventp (xmerl v2.1)

简单的基于事件的处理器(xmerl_scan 的前端)。

实现以 SAX 风格处理 XML 文档流。

每个前端都包含 xmerl_scan 的更详细设置,从而可以使用自定义函数。

摘要

类型

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

记录 #xmlElement{}

函数

以 SAX 风格解析包含 XML 文档的文件。

以 DOM 风格解析包含 XML 文档的文件流。

以 SAX 风格解析包含 XML 文档的文件流。

以 SAX 风格解析包含 XML 文档的文件。

类型

链接到此类型

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 的 schemafalsetrue 选项已过时(即,它们可能会在未来的版本中删除),如果使用,false 等于 off,而 true 等于 dtd
{schemaLocation, [{Namespace,Link}|...]}
明确告知使用哪个 XML Schema 文档来验证 XML 文档。与 {validation,schema} 选项一起使用。
{quiet, Flag}
如果 Xmerl 应该安静地运行且不向标准输出输出任何信息,则设置为 true(默认为 false)。
{doctype_DTD, DTD}
允许在 XML 文档中没有 DTD 名称时指定 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)。
链接到此类型

xmlElement()

查看源码 (未导出)
-type xmlElement() ::
          #xmlElement{name :: term(),
                      expanded_name :: term(),
                      nsinfo :: term(),
                      namespace :: term(),
                      parents :: term(),
                      pos :: term(),
                      attributes :: term(),
                      content :: term(),
                      language :: term(),
                      xmlbase :: term(),
                      elementdef :: term()}.

记录 #xmlElement{}

函数

链接到此函数

file_sax(Fname, CallBackModule, UserState, Options)

查看源码
-spec file_sax(Fname, CallBackModule, UserState, Options) -> NewUserState
                  when
                      Fname :: string(),
                      CallBackModule :: module(),
                      UserState :: term(),
                      Options :: option_list(),
                      NewUserState :: term().

以 SAX 风格解析包含 XML 文档的文件。

调用 XML 解析器 xmerl_scan 的包装器,其中包含 hook_fun,用于在解析实体后直接使用 Xmerl 导出功能。

链接到此函数

stream(Fname, Options)

查看源码
-spec stream(Fname, Options) -> {xmlElement(), list()} | {error, Reason}
                when Fname :: string(), Options :: option_list(), Reason :: term().

以 DOM 风格解析包含 XML 文档的文件流。

调用 XML 解析器 xmerl_scan 的包装器,其中包含 continuation_fun,用于处理 XML 数据流。请注意,continuation_funacc_funfetch_funrulesclose_fun 选项不能使用此解析器进行用户定义。

链接到此函数

stream_sax(Fname, CallBackModule, UserState, Options)

查看源码
-spec stream_sax(Fname, CallBackModule, UserState, Options) ->
                    {xmerl_scan:document(), Rest} | {error, Reason}
                    when
                        Fname :: string(),
                        CallBackModule :: module(),
                        UserState :: term(),
                        Options :: option_list(),
                        Rest :: string(),
                        Reason :: term().

以 SAX 风格解析包含 XML 文档的文件流。

调用 XML 解析器 xmerl_scan 的包装器,其中包含 continuation_fun,用于处理 XML 数据流。请注意,不能使用此解析器来用户定义 continuation_funacc_funfetch_funruleshook_funclose_funuser_state 选项。

链接到此函数

string_sax(String, CallBackModule, UserState, Options)

查看源码
-spec string_sax(String, CallBackModule, UserState, Options) ->
                    {xmerl_scan:document(), Rest} | {error, Reason}
                    when
                        String :: list(),
                        CallBackModule :: module(),
                        UserState :: term(),
                        Options :: option_list(),
                        Rest :: string(),
                        Reason :: term().

以 SAX 风格解析包含 XML 文档的文件。

调用 XML 解析器 xmerl_scan 的包装器,其中包含 hook_fun,用于在解析实体后直接使用 Xmerl 导出功能。