[英]Apache XmlBeans NullPointerException
我試圖解析pacs.003 ISO20022格式的xml文件。 我有這個XSD,並使用XMLBeans創建了所需的Java類。 我遇到的問題是我無法從XML中讀取元素並繼續獲取NullPointerException 。 我搜索過類似的問題,但大多數都導致OP轉向不同的技術。
我從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();
}
}
上面的doc.getFIToFICstmrDrctDbt()
導致NullPointerException ,這似乎指向XMLBeans類中的get_store()
方法或命名空間的問題。
我已經嘗試使用替換命名空間映射並打開和關閉setUseDefaultNamespace()
方法(它目前未在上面注釋掉)。 我還讀了一個關於將elementFormDefault="qualified"
添加到xsd:schema
元素的答案,但是這已經完成了。 這些似乎都沒有解決問題,我的想法已經不多了。
任何幫助將不勝感激。
我已經能夠解決這個問題。 這是因為消息是一個更具體的SEPA DNF文件,它不是通用的pacs.003文件。 這意味着它需要一個不同的模式。
空消息是因為xml沒有<Document>
根標記,它是<MPEDDDnfBlkDirDeb>
根標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.