Apache XmlBeans NullPointerException

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() 方法42=] 或命名空间问题。

我已经尝试使用替代命名空间映射并打开和关闭 setUseDefaultNamespace() 方法(目前上面没有注释掉)。我还阅读了关于将 elementFormDefault="qualified" 添加到 xsd:schema 元素的答案,但这已经完成了。 None 这些似乎解决了问题,我 运行 没有想法。

如有任何帮助,我们将不胜感激。

我已经解决了这个问题。这是因为消息是一个更具体的 SEPA DNF 文件,而不是通用的 pacs.003 文件。这意味着它需要一个不同的模式。

空消息是因为 xml 没有 <Document> 根标签,它是 <MPEDDDnfBlkDirDeb> 根标签。