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>
根标签。
我正在尝试解析 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>
根标签。