2016-08-02 12 views
9

Ich versuche, eine pacs.003 ISO20022 formatierte XML-Datei zu analysieren. Ich habe die XSD dafür und die Verwendung von XMLBeans haben die erforderlichen Java-Klassen erstellt. Das Problem, das ich habe, ist, dass ich nicht in der Lage bin, ein Element aus dem XML zu lesen und eine NullPointerException erhalten. Ich habe nach ähnlichen Problemen gesucht, aber die meisten führen dazu, dass das OP zu einer anderen Technologie wechselt.Apache XmlBeans NullPointerException

Der XML-Schnipsel ich von LON_20160208.xml haben ist:

<S2SDDDnf:FIToFICstmrDrctDbt xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.003.001.02"> 
    <GrpHdr> 
     <MsgId>DDA160802AASW006543</MsgId> 
    </GrpHdr> 
    </S2SDDDnf:FIToFICstmrDrctDbt> 

Mein Code ist:

public static void main(String[] args) { 
    XmlOptions xmlOptions = new XmlOptions(); 
    xmlOptions.setUseDefaultNamespace(); 
    xmlOptions.setSavePrettyPrint(); 

    Document doc; 

    try { 
     doc = Document.Factory.parse(new File("data_samples/LON_20160208.xml")); 
     String messageId = doc.getFIToFICstmrDrctDbt().getGrpHdr().getMsgId(); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (XmlException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Die doc.getFIToFICstmrDrctDbt() obigen Ergebnisse in einem Nullpointer und dies entweder zu Punkt scheint get_store() Methode innerhalb der XMLBeans-Klassen oder ein Problem mit den Namespaces.

Ich habe versucht, eine Ersatz-Namespace Map verwenden und haben die setUseDefaultNamespace()-Methode ein- und ausgeschaltet (es ist derzeit nicht auskommentiert oben). Ich habe auch eine Antwort bezüglich des Hinzufügens von elementFormDefault="qualified" zu dem xsd:schema Element gelesen, aber dies wurde bereits getan. Keines davon scheint das Problem zu lösen und mir gehen die Ideen aus.

Jede Hilfe würde sehr geschätzt werden.

+0

Ist 'data_samples/LON_20160208.xml' erreichbar? – Sanjeev

+0

Ja, ich bin in der Lage, die XML-Ordnung zu lesen und die doc-Variable ist nicht null. –

+0

versuchen Sie, 'S2SDDDnf:' aus Ihrem doc-Element zu entfernen und lesen Sie es dann. Wenn es gelesen werden kann, könnte es ein Problem mit den generierten Klassen geben – Sanjeev

Antwort

6

Ich konnte das Problem beheben. Es war aufgrund der Tatsache, dass die Nachricht eine spezifischere SEPA DNF-Datei ist, die keine generische pacs.003 Datei ist. Dies bedeutet, dass ein anderes Schema benötigt wurde.

Die Null-Nachrichten waren, weil die Xml kein <Document> Root-Tag hat, es ist ein <MPEDDDnfBlkDirDeb> Root-Tag.

Verwandte Themen