Проблема кодирования привязки данных в меню ASP.Net - PullRequest
0 голосов
/ 02 апреля 2010

У меня есть меню, где я связываю данные через:

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();

Проблема, с которой я столкнулся сейчас, заключается в том, что мои данные не обновляются, когда я меняю путь, по которому читается поток.

Когда я пропускаю код, который он делает, но не на своей странице.

Так что дело в том, как мне обновить данные? Или (что на самом деле предпочтительнее), как мне получить правильную кодировку в первом фрагменте кода?

Помощь высоко ценится!

EDIT:

Я попробовал решение 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 ]

0 голосов
/ 06 апреля 2010

Я решил свою проблему.

Я изменил кодировку моего xml-файла в блокноте ++ на UTF8 вместо ANSI (по умолчанию), и это решило проблему.

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

0 голосов
/ 02 апреля 2010

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

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

...