データをバインドするメニューがあります。
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>
他のアイデアはありますか?