0

我的 java 代码正在从我的本地 ActiveMQ 队列中获取 XML 消息。现在它可以成功地从队列中消费消息,但似乎无法解析它?我的 xml 数据如下所示:

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

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

4

2 回答 2

1

您的数据不是格式正确的 XML,无法按原样使用 XML 解析器进行解析。您必须找到一种方法来分离行前后的 XML 数据并BodyLength=850分别解析它们。

于 2013-08-17T10:37:31.650 回答
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"?>在文件开头使用

于 2013-08-17T11:11:40.750 回答