Pergunta

Eu tenho um menu onde vinculei os dados:

XmlDataSource xmlData = new XmlDataSource();
        xmlData.DataFile = String.Format(@"{0}{1}\Navigation.xml", getXmlPath(), getLanguage());
        xmlData.XPath = @"/Items/Item";
        TopNavigation.DataSource = xmlData;
        TopNavigation.DataBind();

O problema é quando meu XML tem personagens especiais, já que eu uso muitas palavras francesas.

Como alternativa, tentei usar um fluxo e usar a codificação para obter os caracteres especiais, com o seguinte código:

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();

O problema que estou tendo agora é que meus dados não atualizam quando altero o caminho em que o fluxo é lido.

Quando eu pulo pelo código, ele faz, mas não na minha página.

Então, o que é, como faço para que os dados sejam atualizados? Ou (o que é realmente preferido) Como faço para acertar a codificação na primeira peça de código?

A ajuda é altamente apreciada!

EDITAR:

Eu tentei a solução CDATA, no entanto, estou trabalhando com atributos, para que não seja possível especificar um elemento em um atributo, meu 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>

Alguma outra idéia?

Foi útil?

Solução 2

Eu resolvi meu problema.

Alterei a codificação do meu arquivo XML no bloco de notas ++ para UTF8 em vez de ANSI (padrão) e ele resolveu o problema.

Obrigado pelas respostas de qualquer maneira

Outras dicas

Tente embrulhar as palavras francesas comu003C![CDATA[....]]> marcação

Nesse caso, o XML não analisará seus personagens especiais

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top