2016-09-13 10 views
1

xmerlのexport_simple関数を使用していて、ルートxml要素の属性を生成する方法が見つかりません。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を生成し、動作しますが、それはルートxmlタグのencoding属性を追加しません:私はこれを試してみました。

私は間違っていますか?

答えて

3

あなたがxmerlのために指定したコールバックモジュールは、あなたが使用できる属性としてプロローグを受け入れている、とあなたがプロローグのために必要なものを詰め込むことができる場所、それは次のとおりです。

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/>" 
関連する問題