سؤال

لدي بعض بيانات XML التي تم إنشاؤها ديناميكيا والتي سيتم استهلاكها من قبل عدد قليل من المستهلكين (صفحة ASPX أو ملف فلاش وربما آخر أيضا).

لقد قمت بتنفيذها كمعالج مخصص. قمت بإنشاء XML في المعالج وإخراجه باستخدام استجابة. الكتابة.

الآن إذا قمت بتعيين خاصية DataFile الخاصة بي xmldatasource إلى المعالج، فإنه يحاول قراءة ملف Ashx حرفيا ولا يطلق عليه عبر HTTP.

اي نصيحه؟

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

المحلول

ضع رمز توليد XML الخاص بك في فئة منفصلة. اطلب من المعالج استخدام الفئة لإنشاء XML وإرسال النتائج إلى العميل (BTW، لا تستخدم الاستجابة. الكتابة ما هي تكنولوجيا مستند XML التي تستخدمها لإنشاء XML في المقام الأول؟).

تأكد من أن الفصل يمكن أن يعرض XML المكتملة كسلسلة.

في صفحة ASPX الخاصة بك، استخدم نفس الفئة وتعيين سلسلة XML إلى خاصية البيانات الخاصة بتحكم XMLDATASOUS الخاص بك.

يحرر:

نظرا لأنك تستخدم مؤشرات XMLTextwriter وإلى تعليقك، فكل ما سبق أن يربك قليلا سأضيف هذه التفاصيل.

تحتاج إلى اتخاذ التعليمات البرمجية التي تنشئ حاليا XML ووضعها في فئة في مجلد App_Code (أو ربما في مشروع DLL). سيكون لهذه الفئة طريقة تأخذ كمعلمة apmltextwriter.

public class XmlCreator
{
    public void GenerateXml(XmlTextWriter writer)
    {
         //All your code that writes the XML
    }
}

في معالجك، لديك هذا الرمز: -

XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);

ملاحظة لا حاجة للاستجابة. الكتابة وهذا يحصل على الترميز المنجز بشكل صحيح.

في صفحة ASP.NET التي تستخدمها: -

StringWriter source = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(source, Encoding.Unicode);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);

yourXmlDataSource.Data = source.ToString();

قد لا يحتاج xmlcreator إلى أن تكون مثبتة في هذه الحالة يمكنك استخدام فئة ثابتة، تعتمد على ما تحتاج إليه البيانات الأخرى لإطعام جيل XM.

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