سؤال

لدي قائمة حيث أقوم بربط البيانات من خلال:

XmlDataSource xmlData = new XmlDataSource();
        xmlData.DataFile = String.Format(@"{0}{1}\Navigation.xml", getXmlPath(), getLanguage());
        xmlData.XPath = @"/Items/Item";
        TopNavigation.DataSource = xmlData;
        TopNavigation.DataBind();

المشكلة هي عندما يكون لدى XML شخصيات خاصة ، لأنني أستخدم الكثير من الكلمات الفرنسية.

كبديل حاولت استخدام دفق بدلاً من ذلك واستخدام الترميز للحصول على الأحرف الخاصة ، مع الكود التالي:

StreamReader strm = new StreamReader(String.Format(@"{0}{1}\Navigation.xml", getXmlPath(), getLanguage()), Encoding.GetEncoding(1254));
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(strm);

            XmlDataSource xmlData = new XmlDataSource();
            xmlData.ID = "TopNav";
            xmlData.Data = xDoc.InnerXml;
            xmlData.XPath = @"/Items/Item";
            TopNavigation.Items.Clear();
            TopNavigation.DataSource = xmlData;
            TopNavigation.DataBind();

المشكلة التي أواجهها الآن هي أن بياناتي لا تحديث عندما أقوم بتغيير المسار الذي يتم فيه قراءة الدفق.

عندما أتخطى الكود ، ولكن ليس على صفحتي.

إذن الأمر هو أيضًا ، كيف يمكنني تحديث البيانات؟ أو (الذي يفضل بالفعل) كيف يمكنني الحصول على الترميز في الجزء الأول من الكود؟

المساعدة للغاية!

تعديل:

جربت حل CDATA ، ومع ذلك أنا أعمل مع سمات ، لذلك لا يمكن تحديد عنصر في سمة ، XML:

<?xml version="1.0" encoding="utf-8" ?>
<Items Text="">
  <Item Text="Actualités>"/>
  <Item Text="Matériau">
    <Item Text="Arsenal"/>
    <Item Text="Vêtements"/>
  </Item>
  <Item Text="Links"/>
</Items>

أي أفكار أخرى؟

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

المحلول 2

لقد حلت مشكلتي.

لقد غيرت ترميز ملف XML الخاص بي في Notepad ++ إلى UTF8 بدلاً من ANSI (افتراضي) ، وحل المشكلة.

شكرا على الردود على أي حال

نصائح أخرى

حاول لف الكلمات الفرنسية معu003C![CDATA[....]]> بطاقة شعار

في هذه الحالة ، لن تقوم XML بتحليل شخصياتك الخاصة

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