0

データをバインドするメニューがあります。

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>

他のアイデアはありますか?

4

2 に答える 2

0

問題を解決しました。

notepad ++のxmlファイルのエンコーディングをANSI(デフォルト)ではなくUTF8に変更したところ、問題が解決しました。

とにかく返信ありがとう

于 2010-04-06T09:06:44.627 に答える
0

<![CDATA[....]]> タグでフランス語の単語をラップしてみてください

この場合、XML は特殊文字を解析しません

于 2010-04-02T14:50:18.543 に答える