2010-04-02 64 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不会解析您的特殊字符