XMLに関する処理を集めたユーティリティモジュール.
Copyright (c) 2013-2014 DWANGO Co., Ltd. All Rights Reserved.
このモジュールでは、XMLの表現形式として、以下のような三要素のタプルが採用されている。
{要素名, 属性連想リスト, 子要素およびテキストのリスト}
また要素名や属性のキー及び値、テキストは、原則としてバイナリで保持されるようになっている。
(ただし、要素名や属性のキーは、アトムで保持することも可能。
また、XML文字列を生成する場合の入力値としては、もう少し制限の緩い表現が使用可能となっている)
例えば "<root attr=\"1\">text1<child />text2</root>"
といったXML文字列をパースすると次のような結果が返ってくる:
> moyo_xml:parse_binary(<<"<root attr=\"1\">text1<child />text2</root>">>, []).
{{<<"root">>,
[{<<"attr">>,<<"1">>}],
[<<"text1">>,{<<"child">>,[],[]},<<"text2">>]},
<<>>}
parse_option() = {key_type, binary | atom | existing_atom} | {allow_external_entity, true | false}
[key_type オプション]
パース結果XMLの要素名および属性名をどのような型で表現するかを指定する.
binary
ならバイナリ型、atom
ならアトム型.
existing_atom
の場合は、名前に対応するアトムが既に存在する場合はアトム型、存在しないならバイナリ型となる.
デフォルト値はbinary
.
[allow_external_entity オプション]
外部エンティティ参照を許可するかどうかを指定する.
true
であれば外部エンティティ参照が許可される.
false
とすることで外部エンティティ参照を禁止できる.
デフォルト値はfalse
.
xml() = xml_element()
xml_attribute() = {xml_attribute_key(), xml_attribute_value()}
xml_attribute_key() = atom() | binary()
xml_attribute_value() = iodata() | term()
parse系関数の結果としては常にバイナリが返る
xml_content() = xml_element() | xml_text()
xml_element() = {xml_element_name(), [xml_attribute()], [xml_content()]}
xml_element_name() = atom() | binary()
xml_text() = iodata() | term()
parse系関数の結果としては常にバイナリが返る
parse_binary/2 | XML文字列(バイナリ)をパースする. |
parse_file/2 | XMLファイルをパースする. |
to_iolist/1 | XMLをiolist形式の文字列に変換する. |
to_iolist/2 | XMLをiolist形式の文字列に、指定されたオプションに従って変換する. |
parse_binary(InputXml, Options::[parse_option()]) -> {xml(), RestXml}
InputXml = binary()
RestXml = binary()
XML文字列(バイナリ)をパースする.
パース結果XMLの属性値およびテキストの型は常にバイナリとなる.
パースに失敗した場合は例外が送出される.
parse_file(FilePath, Options::[parse_option()]) -> {xml(), RestXml}
FilePath = file:name_all()
RestXml = binary()
XMLファイルをパースする.
パース結果XMLの属性値およびテキストの型は常にバイナリとなる.
パースに失敗した場合は例外が送出される.
to_iolist(Xml::xml()) -> XmlString::iolist()
XMLをiolist形式の文字列に変換する
変換に失敗した場合は例外が送出される.
要素の属性値や内容はmoyo_string:to_string/1
によって、適宜文字列に変換される.
to_iolist(Xml::xml(), Options::[moyo_string:encode_option()]) -> XmlString::iolist()
XMLをiolist形式の文字列に、指定されたオプションに従って変換する
変換に失敗した場合は例外が送出される.
要素の属性値や内容はmoyo_string:to_string/2
によって、適宜文字列に変換される.