我有一个菜单,我通过以下方式绑定数据:
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 :(得分:0)
尝试用&lt;![CDATA [....]]&gt;包装法语单词标签
在这种情况下,XML不会解析您的特殊字符
答案 1 :(得分:0)
我解决了我的问题。
我将notepad ++中的xml文件的编码更改为UTF8而不是ANSI(默认),它解决了问题。
感谢您的回复