У меня есть меню, где я связываю данные через:
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>
Есть еще идеи?