1

XPath を使用して、 EclipseLink JAXB (MOXy)経由で XML ドキュメントをマップしようとしています。ただし、XML に CDATA タグが含まれていると問題が発生します。例:

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

アプリケーションで XPath マッピングを取得するために eclipselink-2.3.0 jar を使用しています。JAXB にこの実装を使用させるために、jaxb.properties以下を含むファイルを作成しています。

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

XPath はこの方法でしか機能しません。そうしないと、アプリケーションは注釈を取得することさえできません@XmlPath

XML をアンマーシャラー メソッドで実行すると、次のように null ポインター エラーがスローされます。

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)
4

1 に答える 1

0

アップデート

Blaise さん、Eclipse のバージョンを 2.4.1 に更新したところ、直面していた CDATA の問題が解決されました。今はすべて良いです。

現在、すべてが機能していると聞いてうれしく思います。以下は、EclipseLink 2.4 の MOXy の新機能に関する記事です。


EclipseLink 2.3.0 を使用しているため、EclipseLink 2.3.1 で修正された次のバグに遭遇していると思います。

EclipseLink は現在バージョン 2.4.1 です。可能であれば、それにアップグレードすることをお勧めします。

于 2013-03-21T10:12:43.623 に答える