解析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
关于java - 如何通过带有CDATA中CDATA的SOAP UI将请求发送到Java应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47094708/