XML根元素的属性生成

时间:2016-09-13 11:39:05

标签: erlang elixir

我正在使用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属性。

我做错了什么?

1 个答案:

答案 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/>"