سؤال

لدي سيناريو حيث أحتاج إلى إرسال XML كمحتوى علامة في رسالة طلب SOAP إلى خدمة ويب على سبيل المثال

<arg_1><xml version="1.0" encoding="UTF-8"?><sometag><somemoretag>abcd</somemoretag></sometag></arg_1></code>

يحدث Arg_1 ليكون معلمة سلسلة لخدمة WebService. لذلك أحضر قسم CDATA لهذا الغرض

<arg_1><![CDATA[<xml version="1.0" encoding="UTF-8"?><sometag><somemoretag>abcd</somemoretag></sometag>]]></arg_1>

لكن هذا يستمر في إلقاء لي استثناء

org.xml.sax.saxexception: wsws3084e: خطأ: واجهت SimpleSerializer عنصرًا طفلًا ، وهو غير متوقع ، في شيء كان يحاول إلغاء التسلسل. يتم تحليل الرسالة:

ما زلت أحصل على هذا الاستثناء. هل رأى اى شخص هذا من قبل؟؟

هل كانت مفيدة؟

المحلول

هناك طريقتان يمكنك التعامل مع هذا -

  1. قم بإزالة مقدمة XML وأدخل مستند XML الأصلي في محتوى عنصر ما في المستند الآخر.
<arg_1><sometag><somemoretag>abcd</somemoretag></sometag></arg_1>
  1. الهروب من مستند XML الأصلي كما لو كنت أي محتوى نصي آخر وإدراج النص الناتج في محتوى عنصر ما.
<arg_1>&lt;sometag&gt;&lt;somemoretag&gt;abcd&lt;/somemoretag&gt;&lt;/sometag&gt;</arg_1>

نصائح أخرى

لقد واجهت مشكلة مماثلة ، حيث لم يكن XML الخاص بي داخل CDATA بشكل صحيح. لكي يتم التعامل مع العلامات كسلسلة ، يجب عليك استخدامها على النحو التالي:

 <![CDATA[ ---your xml---- ]]>

لكنك لم تستخدم؟ قبل إصدار XML. يجب أن تكون العلامة<?xml version="1.0" encoding="UTF-8" standalone="yes"?>في حالتك <xml version="1.0" encoding="UTF-8" standalone="yes"?>.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top