У меня есть меню, в котором я связать данные с помощью:меню ASP.Net проблема кодирования привязки
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>
Любые другие идеи?
Вы пытались обернуть французские слова ? –