首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache XmlBeans NullPointerException

Apache XmlBeans NullPointerException
EN

Stack Overflow用户
提问于 2016-08-02 16:02:17
回答 1查看 489关注 0票数 9

我正在尝试解析一个pacs.003 ISO20022格式的xml文件。为此我有XSD,并且使用XMLBeans创建了所需的Java类。我遇到的问题是,我无法从XML中读取元素并继续获取NullPointerException.。我寻找过类似的问题,但大多数结果是OP转向了另一种技术。

我从LON_20160208.xml获得的XML片段是:

代码语言:javascript
复制
  <S2SDDDnf:FIToFICstmrDrctDbt xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.003.001.02">
    <GrpHdr>
      <MsgId>DDA160802AASW006543</MsgId>
    </GrpHdr>
  </S2SDDDnf:FIToFICstmrDrctDbt>

我的代码是:

代码语言:javascript
复制
  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元素的答案,但这已经完成了。所有这些似乎都解决不了这个问题,我的想法也不多了。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 11:44:39

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38725422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档