Как декодировать ASN.1 в XML с помощью erlang - PullRequest
0 голосов
/ 17 января 2011

Я использую модуль asn1 в 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}}}

Как вывести XML вместо термина erlang?

Ответы [ 2 ]

1 голос
/ 17 января 2011

Имейте в виду, что любой термин 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 голосов
/ 25 марта 2014

Возможно два доступных варианта для преобразования ASN1 в представление XML:

http://www.research.ibm.com/trl/projects/xml/xss4j/docs/axt-readme.html

http://www.obj -sys.com / WebTools / asn2xml.php

...