2013-03-20 2 views
1

Я пытаюсь использовать XPath для сопоставления XML-документа через EclipseLink JAXB (MOXy). Но он сталкивается с проблемами, когда XML содержит CDATA тег Пример:Настройка MOXy @XmlPath с XML, содержащим CDATA

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

Я использую EclipseLink-2.3.0 банку, чтобы получить отображения XPath в моем приложении. и сделать JAXB использовать эту реализацию я создаю jaxb.properties файл, который содержит следующее:

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

XPath работает только так, иначе приложение не даже подобрать аннотацию @XmlPath.

Теперь во время работы и XML с помощью метода и unmarshaller он выдает ошибку пустого указателя следующим образом:

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) 
+0

«XPath для синтаксического анализа XML с помощью JAXB "- эти слова не имеют никакого смысла, когда они натянуты в этом порядке. Возможно, вы должны разместить свой * фактический * код, тогда, возможно, кто-то сможет вам помочь. – parsifal

+0

Не могли бы вы разместить свою объектную модель? Также я вижу, что вы используете EclipseLink 2.3.0, текущая версия - 2.4.1, если вы можете обновить: http://www.eclipse.org/eclipselink/downloads/ –

+1

Привет, Блейз, я обновил версию затмения до версии 2.4. 1, и он решил проблему с CDATA, с которой я столкнулся. Теперь все хорошо. – user1886053

ответ

0

UPDATE

Привет Блейз, я обновил версию затмения на 2.4.1 и он решил проблему с CDATA , с которой я столкнулся. Теперь все хорошо.

Я рад слышать, что все работает сейчас. Ниже приводится статья о том, что нового в Moxy в EclipseLink 2.4:


Поскольку вы используете EclipseLink 2.3.0, я полагаю, вы ударяете следующую ошибку, которая была исправлена ​​в EclipseLink 2.3.1.

EclipseLink в настоящее время в версии 2.4.1, я рекомендую модернизации к тому, что если вы можете:

Смежные вопросы