ASP.Net菜单数据绑定编码问题

时间:2010-04-02 14:01:32

标签: asp.net data-binding encoding xmldatasource

我有一个菜单,我通过以下方式绑定数据:

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>

还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

尝试用&lt;![CDATA [....]]&gt;包装法语单词标签

在这种情况下,XML不会解析您的特殊字符

答案 1 :(得分:0)

我解决了我的问题。

我将notepad ++中的xml文件的编码更改为UTF8而不是ANSI(默认),它解决了问题。

感谢您的回复