2011-01-17 7 views
0

dekodieren Ich benutze asn1-Modul in Erlang zu dekodieren. Der Ausgang ist wieWie ASN.1 zu XML mit Erlang

{'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}}} 

Wie kann ich XML anstelle von erlang Begriff ausgeben?

Antwort

1

Beachten Sie, dass jeder erlang Begriff (nicht spezifisch für die ASN.1-Modul) Ausgabe als XML durch eine Funktion wie diese leicht sein könnte:

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

Dank Ihre Antwort. Ich schrieb eine Funktion wie diese, aber den Namen des Datensatzes für XML-Tag. Zum Beispiel "{'PLMN-Identität', [2,2,6], [0,1]}" ==> " 2,2,6 0,1 ". Jetzt versuche ich "" durch den Namen des Datensatzes zu ersetzen. – shian