我正在使用xmerl的export_simple
函数,但我找不到为根xml
元素生成属性的方法。我试过这个:
defmodule SomeModule do
require Record
Record.defrecord :xmlAttribute, Record.extract(:xmlAttribute, from_lib: "xmerl/include/xmerl.hrl")
def func do
{:bar, [], []}
|> List.wrap()
|> :xmerl.export_simple(:xmerl_xml, [xmlAttribute(name: :encoding, pos: 0, value: :"UTF-8", normalized: true)])
|> List.flatten()
|> to_string()
end
end
并且它有效,它会生成xml,但它不会为根encoding
标记添加xml
属性。
我做错了什么?
答案 0 :(得分:3)
您为xmerl指定的回调模块只接受prolog作为您可以使用的属性,这是您可以填充prolog所需的任何内容的地方:
defmodule S do
require Record
Record.defrecord :xmlAttribute, Record.extract(:xmlAttribute, from_lib: "xmerl/include/xmerl.hrl")
def func do
{:bar, [], []}
|> List.wrap()
|> :xmerl.export_simple(:xmerl_xml, [xmlAttribute(name: :prolog, value: "<?xml version=\"1.0\" encoding=\"utf-8\"?>")])
|> List.flatten()
|> to_string()
end
end
iex(12)> S.func
"<?xml version=\"1.0\" encoding=\"utf-8\"?><bar/>"