2011-01-17 1 views
0

デコードにerlangでasn1モジュールを使用します。出力は次のようになりますerlangでASN.1をXMLにデコードする方法

{'UL-CCCH-Message',asn1_NOVALUE, 
       {rrcConnectionRequest, 
       {'RRCConnectionRequest', 
       {'tmsi-and-LAI', 
        {'TMSI-and-LAI-GSM-MAP', 
        [1,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,1,0,1,1,0,1,0,1,1, 
        1,1,0,1,0], 
        {'LAI', 
        {'PLMN-Identity',[2,2,6],[0,1]}, 
        [0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,1]}}}, 
       terminatingBackgroundCall,noError, 
       {'MeasuredResultsOnRACH', 
        {'MeasuredResultsOnRACH_currentCell', 
        {fdd, 
        {'MeasuredResultsOnRACH_currentCell_modeSpecificInfo_fdd', 
        {'cpich-Ec-N0',39}}}}, 
        asn1_NOVALUE}, 
       asn1_NOVALUE}}} 

erlangの代わりにXMLを出力するにはどうすればいいですか?

答えて

1

簡単にこのような機能により、任意のErlangの用語(ASN.1モジュールに固有ではないが)、XMLとして出力することができることに注意してください:

to_xml(X) when is_atom(X) -> 
    "<atom>" ++ atom_to_list(X) ++ "</atom>"; % might want apostrophes 
to_xml(X) when is_integer(X) -> 
    "<integer>" ++ io_lib:format("~p", [X]) ++ "</integer>"; 
to_xml(X) when is_tuple(X) -> 
    "<tuple size=" ++ tuple_size(X) ++ ">" ++ % or maybe want size implicit 
     lists:foldr(fun(E, L) -> to_xml(E) ++ L end, [], tuple_to_list(X)) 
     ++ "</tuple>"; 
to_xml(X) when is_list(X) -> 
    "<list>" ++ lists:foldr(fun(E, L) -> to_xml(E) ++ L end, [], X) ++ "</list>"; 
% etc... 
+0

おかげであなたの答え。私はこのような関数を書いたが、xmlタグのレコード名を使っていた。 "PLMN-Identity"、[2,2,6]、[0,1]} "==>" 2,2,6 0,1」を選択します。今私は ""をレコードフィールド名に置き換えようとしています。 – shian

関連する問題