2010-04-02 2 views
0

У меня есть меню, в котором я связать данные с помощью:меню 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> 

Любые другие идеи?

+0

Вы пытались обернуть французские слова ? –

ответ

0

я решил мою проблему.

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

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

0

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

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

Смежные вопросы