2010-08-12 5 views
1

У меня есть файл XSD, который нужно разобрать и преобразовать в файл XML.Perl XSD parsing

Есть ли способ сделать это с помощью Perl ??? После создания XML-файла я должен проанализировать этот XML-файл, который является второй частью, но я был поражен в первой части преобразования файла XSD в формат XML.

XSD приводится ниже

<?xml version="1.0" encoding="UTF-8"?> 
<!-- This document was generated by the Objective Systems ASN2XSD Compiler 
    (http://www.obj-sys.com). Version: 6.3.0, Date: 06-May-2010. --> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.obj-sys.com/S1AP-PDU-Descriptions" 
      targetNamespace="http://www.obj-sys.com/S1AP-PDU-Descriptions" 
xmlns:S1AP-CommonDataTypes="http://www.obj-sys.com/S1AP-CommonDataTypes" 
xmlns:S1AP-PDU-Contents="http://www.obj-sys.com/S1AP-PDU-Contents" 
xmlns:S1AP-Constants="http://www.obj-sys.com/S1AP-Constants" 
xmlns:asn1="http://www.obj-sys.com/v1.0/XMLSchema" 
elementFormDefault="qualified"> 
    <xsd:import namespace="http://www.obj-sys.com/S1AP-CommonDataTypes" 
    schemaLocation="S1AP-CommonDataTypes.xsd"/> 
    <xsd:import namespace="http://www.obj-sys.com/S1AP-PDU-Contents" 
    schemaLocation="S1AP-PDU-Contents.xsd"/> 
    <xsd:import namespace="http://www.obj-sys.com/S1AP-Constants" 
    schemaLocation="S1AP-Constants.xsd"/> 
    <xsd:import namespace="http://www.obj-sys.com/v1.0/XMLSchema" 
    schemaLocation="http://www.obj-sys.com/v1.0/XMLSchema/asn1.xsd"/> 

    <!-- PDU definition --> 
    <xsd:element name="s1AP-PDU" type="S1AP-PDU"/> 
    <xsd:complexType name="S1AP-PDU"> 
     <xsd:choice> 
     <xsd:element name="initiatingMessage" type="InitiatingMessage"/> 
     <xsd:element name="successfulOutcome" type="SuccessfulOutcome"/> 
     <xsd:element name="unsuccessfulOutcome" type="UnsuccessfulOutcome"/> 
     <xsd:any namespace="##other" processContents="lax"/> 
     </xsd:choice> 
    </xsd:complexType> 

    <xsd:complexType name="InitiatingMessage"> 
     <xsd:sequence> 
     <xsd:element name="procedureCode" type="S1AP-CommonDataTypes:ProcedureCode"/> 
     <xsd:element name="criticality" type="S1AP-CommonDataTypes:Criticality"/> 
     <xsd:element name="value" type="asn1:OpenType"/> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="SuccessfulOutcome"> 
     <xsd:sequence> 
     <xsd:element name="procedureCode" type="S1AP-CommonDataTypes:ProcedureCode"/> 
     <xsd:element name="criticality" type="S1AP-CommonDataTypes:Criticality"/> 
     <xsd:element name="value" type="asn1:OpenType"/> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="UnsuccessfulOutcome"> 
     <xsd:sequence> 
     <xsd:element name="procedureCode" type="S1AP-CommonDataTypes:ProcedureCode"/> 
     <xsd:element name="criticality" type="S1AP-CommonDataTypes:Criticality"/> 
     <xsd:element name="value" type="asn1:OpenType"/> 
     </xsd:sequence> 
    </xsd:complexType> 

</xsd:schema> 
+0

есть инструмент в java, вы можете попробовать это с помощью googleing – rpg

ответ

0

Похоже, что вы использовали один из бесплатных инструментов из Objective Systems преобразовать некоторые ASN.1 данные. Я считаю, что вы использовали свой инструмент ASN2XSD, когда вместо этого вы использовали свой ASN2XML-инструмент. Инструмент XSD создает документ описания, подобный тому, который вы показываете в своем вопросе, который помогает использовать другой формат инструмента и описывать ваши данные, чего вы не хотели.

Если вы используете свой инструмент ASN2XML из первой ссылки выше, чтобы преобразовать данные ASN.1, он будет генерировать вывод XML, который вам нужен, не теряя при этом никаких данных. Затем вы можете использовать инструменты XML Perl для анализа этих данных.

+0

Я также хотел добавить, что IBM имеет еще один хороший инструмент преобразования ASN.1 в XML: http://www.trl.ibm.com/projects/xml/ xss4j/документы/AXT-readme.html – Devin

Смежные вопросы