java - 使用包含 CDATA 的 XML 配置 MOXy 的 @XmlPath

标签 java jaxb eclipselink moxy

我正在尝试使用 XPath 通过 EclipseLink JAXB (MOXy) 映射 XML 文档。但是当 XML 包含 CDATA 标记时会遇到问题示例:

<![CDATA[Jill's Box Company]]>

我正在使用 eclipselink-2.3.0 jar 来获取应用程序中的 XPath 映射。 为了使 JAXB 使用此实现,我创建了一个 jaxb.properties 文件,其中包含以下内容:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

XPath 只能以这种方式工作,否则应用程序甚至不会获取注释 @XmlPath

现在,在通过 unmarshaller 方法运行 XML 时,它会抛出空指针错误,如下所示:

java.lang.NullPointerException
    at org.eclipse.persistence.oxm.record.UnmarshalRecord.startCDATA(UnmarshalRecord.java:1035)
    at org.eclipse.persistence.internal.oxm.record.XMLReader$LexicalHandlerWrapper.startCDATA(XMLReader.java:226)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startCDATA(AbstractSAXParser.java:625)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:487)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
    at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133)
    at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:173)
    at org.eclipse.persistence.internal.oxm.record.XMLReader.parse(XMLReader.java:147)
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:713)
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:286)
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:260)
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:505)
    at org.eclipse.persistence.oxm.XMLUnmarshaller.unmarshal(XMLUnmarshaller.java:594)
    at org.eclipse.persistence.jaxb.JAXBUnmarshaller.unmarshal(JAXBUnmarshaller.java:269)
    at com.jbhunt.lib.mgintegrationutils.utils.JAXBUtils.unmarshal(JAXBUtils.java:67)
    at com.jbhunt.biz.mgarListener.mq.converter.MgarListenerMQMessageParser.getMasterARStagingVo(MgarListenerMQMessageParser.java:51)
    at com.jbhunt.biz.mgarListener.mq.MgarListenerMessageConsumerImpl.onMessage(MgarListenerMessageConsumerImpl.java:62)
    at com.jbhunt.biz.mgarListener.mq.JMSMessageProcessor.receiveAndProcessMessage(JMSMessageProcessor.java:106)
    at com.jbhunt.biz.mgarListener.thread.MessageProcessorThread.run(MessageProcessorThread.java:46)
    at java.lang.Thread.run(Thread.java:662)

最佳答案

更新

Hi Blaise, I updated the eclipse version to 2.4.1 and it solved the CDATA issue I was facing. Its all Good now.

我很高兴听到现在一切正常。下面是一篇有关 EclipseLink 2.4 中 MOXy 新增功能的文章:

<小时/>

由于您使用的是 EclipseLink 2.3.0,我相信您遇到了以下错误,该错误已在 EclipseLink 2.3.1 中修复。

EclipseLink 目前版本为 2.4.1,如果可以的话我建议升级到该版本:

关于java - 使用包含 CDATA 的 XML 配置 MOXy 的 @XmlPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15534466/

相关文章:

java - ReSTLet 路由器相对路径错误

java - Big Decimal 总是四舍五入到两位小数(即使我的 BigDecimal 对象没有小数)?

jpa - EclipseLink JPQL (Glassfish v3) : join fetch syntax problem?

JAVA Eclipse链接查询

java - EclipseLink 无法检索手动插入的实体

java - java中位移位时溢出

java - 实际命令行运行时引用变量返回错误 "No longer attached to the DOM"

java - JPA EntityGraph 不工作;始终加载相关集合

java - 使用 JAXB 编译多个包含相同元素的重复定义的 XSD

java - Jax ws- xs :date format validation