我在解析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> ]]>
答案 0 :(得分:1)
我推测您的问题实际上是由嵌套的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"?>