2013-08-17 60 views
0

我的java代码正在从本地ActiveMQ队列中取得XML消息。现在它可以成功地从队列中消费消息,但它似乎无法解析它?我的XML数据是这样的:JMS消息解析异常

#---------- #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可能会导致此问题,但如果我摆脱他们,我的代码将无法从它的extrat客户端信息。

这是可以在代码中配置的东西吗?谢谢。

+0

之初为什么声明** BodyLength = 850挂**。把它放在一些标签里面。并且语句** <?xml version =“1.0”encoding =“ISO-8859-1”?> **必须在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解析器解析原样。您必须找到一种方法来分隔BodyLength=850行前后的XML数据,并分别解析它们。