Asn.1 средства разработки, CDR конвертировать в XML с использованием Java

Я пытаюсь декодировать файл CDR, чтобы преобразовать его в XML

Я установил Java компилятор на моем ПК. Я использовал эту ссылку http://www.asnlab.org/asndt/overview.html

Я попытался декодировать мой файл CDR, но он не работает должным образом.

Он показывает первые 19 записей правильно, а потом выдает ошибку, я попробовал 2 разных CDR файла. И оба они показывают только 19 записей.

1-й файл дает мне эту ошибку:

Запись 20 org.asnlab.asndt.runtime.error.AsnRuntimeException: Невозможно вызвать метод 'valueOf()' 794995 в org.asnlab.asndt.runtime.conv.ReflectionEnumeratedConverter.toObject(ed:40) в org.asnlab.as runtime.type.EnumeratedType.I(mc:126) в org.asnlab.asndt.runtime.type.ImplicitType.I(xc:152) в org.asnlab.asndt.runtime.type.SetType.I(gb:191) в org.asnlab.asndt.runtime.type.SetType.I(gb:158) в org.asnlab.asndt.runtime.type.ImplicitType.I(xc:152) в org.asnlab.asndt.runtime.type.ChoiceType.I(hc:183) в org.asnlab.asndt.runtime.type.SequenceType.I(xb:221) в org.asnlab.asndt.runtime.type.SequenceType.I(xb:46) в org.asnlab. asndt.runtime.type.ImplicitType.I (xc: 152) в org.asnlab.asndt.runtime.type.AsnType.I(bb:354) в org.asnlab.asndt.runtime.type.ByteBuffer.decode(fc:18) на org.asnlab.asndt.runtime.type.AsnType.decode(bb:338) на Test.main(Test.java:20)

И второй файл дает мне эту ошибку:

Запишите 20 org.asnlab.asndt.runtime.error.InvalidTagException 229505 в org.asnlab.asndt.runtime.type.AsnType.I(bb:369) в org.asnlab.asndt.runtime.type.ByteBuffer.decode (18) на org.asnlab.asndt.runtime.type.AsnType.decode(bb:338) на Test.main(Test.java:20)

Я не понимаю, это проблема с моим определением ASN.1 или нет?

2 ответа

Решение

Этот вопрос лучше всего задать продавцу инструмента ASN.1, который вы используете. Другая возможность состоит в том, чтобы попробовать другие инструменты ASN.1, такие как один из перечисленных на странице проекта МСЭ-T ASN.1 ( http://www.itu.int/ITU-T/asn1/links/index.htm). Существует также бесплатный онлайн-компилятор и кодер / декодер ASN.1, который вы можете попробовать по адресу http://asn1-playground.oss.com/. Этот бесплатный онлайн-инструмент может дать вам подробный анализ вашего CDR, чтобы дать вам представление о том, что не так.

Файл CDR не совсем в формате кодировки ASN.1, между записями есть пробелы (ASCII 32). Одним из обходных путей является обнаружение и фильтрация этих пробелов каждый раз, когда запись декодируется, как пример кода здесь:

        byte [] content = FileUtils.readFileToByteArray (новый файл ("CDR1"));
        ByteBuffer buffer = (ByteBuffer) Buffer.wrap(content, EncodingRules.BASIC_ENCODING_RULES);

        CDMACallDataRecords records = new CDMACallDataRecords();
        try {
            while (buffer.hasRemaining()) {
                CDMACallDataRecord ccdr = (CDMACallDataRecord) CDMACallDataRecord.TYPE.decode(buffer, CDMACallDataRecord.CONVERTER);
                records.records.add(CCDR);

                if (buffer.hasRemaining()) {
                    byte b = buffer.getByte();
                    while (b == 32 && buffer.hasRemaining()) {
                        b = buffer.getByte();
                    }
                    if (b!= 32) {
                        buffer.position(buffer.position() - 1);
                    }
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println(buffer.remaining());
        }

Эта ошибка не указана в кодировке ASN.1, поэтому она не связана с инструментами ASN.1.

Другие вопросы по тегам