Вопрос

У меня есть меню, в котором я привязываю данные через:

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 (по умолчанию), и это решило проблему.

В любом случае спасибо за ответы

Другие советы

Попробуйте обернуть французские слова тегом <![CDATA[....]]>.

В этом случае XML не будет анализировать ваши специальные символы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top