pacs.003 ISO20022フォーマットされたxmlファイルを解析しようとしています。私はこれに対してXSDを使用しており、XMLBeansを使用して必要なJavaクラスを作成しています。私が抱えている問題は、XMLから要素を読み取り、取得することができないことです。NullPointerException。私は同様の問題を捜し求めましたが、多くの場合OPは別の技術に移行します。Apache XmlBeans NullPointerException
私はLON_20160208.xmlから持っているXMLの抜粋は次のとおりです。
<S2SDDDnf:FIToFICstmrDrctDbt xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.003.001.02">
<GrpHdr>
<MsgId>DDA160802AASW006543</MsgId>
</GrpHdr>
</S2SDDDnf:FIToFICstmrDrctDbt>
私のコードは次のとおりです。
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();
}
}
NullPointerExceptionがで結果上記doc.getFIToFICstmrDrctDbt()
、これはどちらかにポイントするようですXMLBeansクラス内のget_store()
メソッド、または名前空間の問題です。
代替の名前空間マップを使用しようとしましたが、setUseDefaultNamespace()
メソッドのオンとオフを切り替えました(これは現在、上でコメントアウトされていません)。私はelementFormDefault="qualified"
をxsd:schema
要素に追加することについての回答も読んだが、これは既に行われている。これらのどれも問題を解決していないようで、私はアイデアが不足しています。
ご協力いただければ幸いです。
'data_samples/LON_20160208.xml'には到達可能ですか? – Sanjeev
私はXMLの細かい部分を読むことができ、doc変数はnullではありません。 –
doc要素から 'S2SDDDnf:'を削除してみてください。それが読める場合は、生成されたクラスに問題がある可能性があります – Sanjeev