如何通过 SOAP UI 将 CDATA 中的 CDATA 请求发送到 Java 应用程序?
How to send request through SOAP UI with CDATA within CDATA to Java Application?
我在解析时遇到以下异常 XML
org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
我正在发送的 SOAp 请求:
<soap:Envelope>
<soap:Header/>
<soap:Body>
<ver:ReceiveOnlineBatchExternalAttachment>
<web:username>user</web:username>
<web:passwd>pass</web:passwd>
<web:receiversReference>1232323</web:receiversReference>
<web:sequenceNumber>1</web:sequenceNumber>
<web:batch>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<DataBatch>
<DataUnits>
<DataUnit>
<FormTask>
<ServiceCode>323015</ServiceCode>
<Form>
<FormData>
<![CDATA[<melding> </melding>]]
</FormData>
</Form>
</FormTask>
</DataUnit>
</DataUnits>
</DataBatch>
]]>>
</web:batch>
</ver:ReceiveOnlineBatchExternalAttachment>
</soap:Body>
</soap:Envelope>
我对 CDATA 进行了多次更改,但都遇到了同样的错误。
谁能建议在此请求中如何处理 CDATA 中的 CDATA?
尝试以下但失败:
<![CDATA[ <elements> <![CDATA[<melding> </melding>]] <elements> ]]>>
<![CDATA[ <elements> <![CDATA[<melding> </melding>]]> <elements> ]]>
<![CDATA[ <elements> <![CDATA[<melding> </melding>]]> <elements> ]]>
我推测您的问题实际上是由 CDATA
内容嵌套引起的。您可以尝试以下操作吗:
<![CDATA[
<DataBatch>
<DataUnits>
<DataUnit>
<FormTask>
<ServiceCode>323015</ServiceCode>
<Form>
<FormData>
<![CDATA[
<melding> </melding>
]]]]><![CDATA[>
</FormData>
</Form>
</FormTask>
</DataUnit>
</DataUnits>
</DataBatch>
]]>
这里技巧的要点是,当解析器命中内部嵌套 <![CDATA[
时,它实际上会忽略它。然后,当它点击这个时:
]]]]><![CDATA[>
第一个]]
也会被忽略,后面的]]>
会被消耗掉,关闭外层的CDATA,然后马上一个新的CDATA再次打开,应该持续到外部关闭。
@fatherazrael 编辑:
删除 XML 标签 <?xml version="1.0" encoding="UTF-8"?>
参考:Nested CDATA - correctly
我在解析时遇到以下异常 XML
org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
我正在发送的 SOAp 请求:
<soap:Envelope>
<soap:Header/>
<soap:Body>
<ver:ReceiveOnlineBatchExternalAttachment>
<web:username>user</web:username>
<web:passwd>pass</web:passwd>
<web:receiversReference>1232323</web:receiversReference>
<web:sequenceNumber>1</web:sequenceNumber>
<web:batch>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<DataBatch>
<DataUnits>
<DataUnit>
<FormTask>
<ServiceCode>323015</ServiceCode>
<Form>
<FormData>
<![CDATA[<melding> </melding>]]
</FormData>
</Form>
</FormTask>
</DataUnit>
</DataUnits>
</DataBatch>
]]>>
</web:batch>
</ver:ReceiveOnlineBatchExternalAttachment>
</soap:Body>
</soap:Envelope>
我对 CDATA 进行了多次更改,但都遇到了同样的错误。 谁能建议在此请求中如何处理 CDATA 中的 CDATA?
尝试以下但失败:
<![CDATA[ <elements> <![CDATA[<melding> </melding>]] <elements> ]]>>
<![CDATA[ <elements> <![CDATA[<melding> </melding>]]> <elements> ]]>
<![CDATA[ <elements> <![CDATA[<melding> </melding>]]> <elements> ]]>
我推测您的问题实际上是由 CDATA
内容嵌套引起的。您可以尝试以下操作吗:
<![CDATA[
<DataBatch>
<DataUnits>
<DataUnit>
<FormTask>
<ServiceCode>323015</ServiceCode>
<Form>
<FormData>
<![CDATA[
<melding> </melding>
]]]]><![CDATA[>
</FormData>
</Form>
</FormTask>
</DataUnit>
</DataUnits>
</DataBatch>
]]>
这里技巧的要点是,当解析器命中内部嵌套 <![CDATA[
时,它实际上会忽略它。然后,当它点击这个时:
]]]]><![CDATA[>
第一个]]
也会被忽略,后面的]]>
会被消耗掉,关闭外层的CDATA,然后马上一个新的CDATA再次打开,应该持续到外部关闭。
@fatherazrael 编辑:
删除 XML 标签 <?xml version="1.0" encoding="UTF-8"?>
参考:Nested CDATA - correctly