SOAP - العنصر لا يحتوي على XSI: NIL كخاصية ، لكن التخلص من عدم جعل الكائن لا فارغًا

StackOverflow https://stackoverflow.com/questions/3815081

سؤال

أنا noob الكلي عندما يتعلق الأمر برسائل XML وصابون. ... ها هي رسالة الصابون.

<?xml version="1.0" encoding="utf-8" ?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <CR>
            <Username xmlns="<Hidden>">mtas</Username>
            <Password xmlns="<Hidden>">password</Password>
            <id xmlns="<Hidden>">
                70dad12b-bb50-402d-8b34-
                fe2d4c0c283d
            </id>
            <Data xmlns="<Hidden>">
                <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns="<Hidden>">
                    <CS>
                        <CSCallbackRequest xmlns="">
                            <CDS xsi:nil="true" xmlns="<Hidden>"/>
                            <CDRP xmlns="<Hidden>"/>
                            <UDI xsi:nil="true"
                            xmlns="<Hidden>"/>
                        </CSCallbackRequest>
                    </CS>
                    <Fault xsi:nil="true" />
                    <Comment xsi:nil="true"/>
                </Data>
            </Data>
        </CR>
    </s:Body>
</s:Envelope>

لقد أنشأنا الفصول باستخدام أداة XSD.exe التي أعطتنا فصولًا لإلغاء التخلص منها. تم توفير ملف .xsd هذا من قبل الشركة التي نتلقى رسائل الصابون منها.

ها هي القضية. عندما نحصل على هذا النوع من الاستجابة من الشركة ، فإننا نبحث في CscallbackRequest لتلك العناصر الثلاثة في الداخل ، والأقراص المدمجة ، و CDRP ، و UDI. نحن نحاول تحديد نوع رد الاتصال الذي نتلقاه. كان افتراضي الأولي عندما نستخدم XMLSerializer مع النوع (نوع فئة تم إنشاؤها) ، العنصر داخل cscallbackRequest الذي لا يحتوي على XSI: nil = true سيسمح للكائن داخل نوع فئة تم إنشاؤها الكائن لن يكون فارغا. لكن هذا ليس هو الحال. كيف يمكنني التحقق مما إذا كان خاصية تحتوي على XSI: nil proprerty بعد الهجر؟

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

المحلول

في الواقع ، اكتشفت القضية. رسالة الصابون التي وضعتها هنا هي في الواقع مثال من وثائق الشركة. كنت أحاول استخدام هذا كخريجة لرسالة نتلقاها. بعد مقارنة ملفات الفئة التي تم إنشاؤها من XSD ، لاحظت أن <CS> لم يتم تعريفه بالفعل في الملفات. عندما كان يفرز ، لن يجد هذا العنصر ، وبالتالي لا يملأ أي شيء ، لأننا بدأنا في استحضار من <Data> العنصر وما بعده. لقد راجعت الأمثلة الأخرى في الوثائق ولم يكن لديها هذا إضافي <CS> عنصر. إزالة هذا العنصر إصلاح هذه القضية برمتها. لقد أبلغت الشركة عن خطأها في الوثائق.

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