2013-08-17 2 views
0

Мой код Java принимает XML-сообщения из локальной локальной очереди ActiveMQ. Теперь он может успешно использовать сообщения из очереди, но кажется, что не удается его разобрать? Мои данные XML выглядит следующим образом:JMS Message Parse Exception

#---------- #1 : ----------# 
<MSG_INFO> 
    <message type="TextMessage" messageSelector="" originationTimestamp="" receiveTime="" jmsServerTimestamp="" jmsMsgExpiration=""> 
    <header JMSDestination="Asurion.SYD02.Q.Business.NonPersistent.Policy.PublishTelstraAMAEnrollments" JMSDestinationType="Queue" JMSDeliveryMode="1" /> 
     <properties> 
     <property name="Client" type="String">Telstra</property> 
     </properties> 
    </message> 
</MSG_INFO> 
BodyLength=850 
<?xml version="1.0" encoding="UTF-8"?> 
<ns0:PublishEnrollmentRequest xmlns:ns0="http://services.asurion.com/schemas/PolicyAdministration/PublishEnrollmentRequest/1.0"> 
    <ns0:Parameters> 
    <ns0:Enrollments> 
     <ns0:MDN>9890667692</ns0:MDN> 
     <ns0:FeatureCode>MBBPHPMPS</ns0:FeatureCode> 
     <ns0:ProductName>MTS-SA</ns0:ProductName> 
     <ns0:Status>Active</ns0:Status> 
     <ns0:Active>Y</ns0:Active> 
     <ns0:EffectiveDate>2013-07-02T19:36:51-04:00</ns0:EffectiveDate> 
     <ns0:EnrollmentType>Customer</ns0:EnrollmentType> 
     <ns0:Make>UnKnown</ns0:Make> 
     <ns0:Model>UnKnown</ns0:Model> 
     <ns0:ActivationDate>2013-07-02T19:36:51-04:00</ns0:ActivationDate> 
     <ns0:ESN /> 
     <ns0:IMEI /> 
     <ns0:SubID>281474977839805</ns0:SubID> 
     <ns0:Operation>Enrollment Added</ns0:Operation> 
    </ns0:Enrollments> 
</ns0:Parameters> 

Исключение я получаю сейчас:

Caused by: org.xml.sax.SAXParseException: Unexpected element: CDATA 

Я понимаю, что это может быть BodyLength TNE, что может вызвать эту проблему, но если я избавился от них, мой код не сможет выдать из него информацию о клиенте.

Это что-то конфигурируемое в коде? Благодарю.

+0

Почему заявление ** BodyLength = 850 висит **. Поместите его внутри некоторого тега. и утверждение ** ** должно начинаться с xml. Кодировка не должна иметь значения, но этот оператор должен быть в начале xml. В противном случае ваш ** xml недействителен **. Неудивительно, что парсер не будет разбирать его. –

ответ

0

попытаться изменить XML в, если вы можете следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<ns0:PublishEnrollmentRequest xmlns:ns0="http://services.asurion.com/schemas/PolicyAdministration/PublishEnrollmentRequest/1.0"> 
    <ns0:Parameters> 
    <ns0:Enrollments> 
     <ns0:MDN>9890667692</ns0:MDN> 
     <ns0:FeatureCode>MBBPHPMPS</ns0:FeatureCode> 
     <ns0:ProductName>MTS-SA</ns0:ProductName> 
     <ns0:Status>Active</ns0:Status> 
     <ns0:Active>Y</ns0:Active> 
     <ns0:EffectiveDate>2013-07-02T19:36:51-04:00</ns0:EffectiveDate> 
     <ns0:EnrollmentType>Customer</ns0:EnrollmentType> 
     <ns0:Make>UnKnown</ns0:Make> 
     <ns0:Model>UnKnown</ns0:Model> 
     <ns0:ActivationDate>2013-07-02T19:36:51-04:00</ns0:ActivationDate> 
     <ns0:ESN /> 
     <ns0:IMEI /> 
     <ns0:SubID>281474977839805</ns0:SubID> 
     <ns0:Operation>Enrollment Added</ns0:Operation> 
    </ns0:Enrollments> 
</ns0:Parameters> 
<MSG_INFO> 
    <message type="TextMessage" messageSelector="" originationTimestamp="" receiveTime="" jmsServerTimestamp="" jmsMsgExpiration=""> 
    <header JMSDestination="Asurion.SYD02.Q.Business.NonPersistent.Policy.PublishTelstraAMAEnrollments" JMSDestinationType="Queue" JMSDeliveryMode="1" /> 
     <properties> 
     <property name="Client" type="String">Telstra</property> 
     </properties> 
    </message> 
</MSG_INFO> 
<body BodyLength="850" /> 
</ns0:PublishEnrollmentRequest> 

Если вы не хотите, чтобы изменить ваш XML попытаться отделяя вас XML выше и ниже BodyLength=850. и использовать <?xml version="1.0" encoding=utf-8"?> в начале файла

+0

изменен на ваш предложенный xml, на этот раз я получил ошибку: вызвано: org.xml.sax.SAXParseException: Неожиданный элемент: OPEN_TAG – Kevin

+0

, пожалуйста, покажите мне свой код – mega6382

1

Ваши данные не являются well-formed XML и не могут быть проанализированы с помощью синтаксического анализатора XML как есть. Вам нужно будет найти способ разделить данные XML до и после строки BodyLength=850 и проанализировать их отдельно.