查看源码 xmerl_eventp (xmerl v2.1)
简单的基于事件的处理器(xmerl_scan
的前端)。
实现以 SAX 风格处理 XML 文档流。
每个前端都包含 xmerl_scan
的更详细设置,从而可以使用自定义函数。
摘要
函数
以 SAX 风格解析包含 XML 文档的文件。
以 DOM 风格解析包含 XML 文档的文件流。
以 SAX 风格解析包含 XML 文档的文件流。
以 SAX 风格解析包含 XML 文档的文件。
类型
-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
。false
和true
选项已过时(即,它们可能会在未来的版本中删除),如果使用,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
)。
-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{}
函数
-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 导出功能。
-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_fun
、acc_fun
、fetch_fun
、rules
和 close_fun
选项不能使用此解析器进行用户定义。
-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_fun
、acc_fun
、fetch_fun
、rules
、hook_fun
、close_fun
和 user_state
选项。
-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 导出功能。