2010-04-02 78 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(); 

我現在遇到的問題是,我的數據不會刷新時我改變了流被讀取的路徑。

當我跳過它的代碼,但不在我的頁面上。

所以,事情要麼是,我怎樣才能讓數據更新?或者(實際上是首選)我如何在第一段代碼中獲得編碼權限?

幫助非常貶低!

編輯:

我試過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

您是否嘗試用<![CDATA [....]]>來包裝法語單詞? – 2010-04-02 14:13:10

回答

0

我解決我的問題。

我改變了我的xml文件在記事本++編碼爲UTF8而不是ANSI(默認),並解決了問題。

感謝您的回覆

0

嘗試包法語單詞,<![CDATA [...]] >標籤

在這種情況下,XML不會解析您的特殊字符