none
Criar XML com aspas duplas no C# RRS feed

  • Pergunta

  • Olá pessoal.

    procurei aqui no forum varias entradas relacionadas a aspas duplas com C# mas nenhuma sanou minha dúvida.

    Preciso montar algumas tags xml para passar como parâmetro para uma procedure. obs: não posso mexer na proc.

    Entao monto minha tag da seguinte forma:

    string xmlString  = "<TESTE Campo1=" + "\"" + "valor" + "\"" + "/>";

    teoricamente o resultado deveria ser 

    <TESTE campo1="valor"/>

    porem quando coloco no immediate window ou passo como parâmetro para a proc recebo a string desta forma:

    "<TESTE Campo1=\"valor\"/>"

    Não consigo entender porque o c# faz esta conversão.

    Já tentei também colocando o @ na frente e o resultado é o mesmo. cheguei até criar o xml assim:

       XElement xml = new XElement("TESTE",
                    new XAttribute("Campo1", 1),
                    new XAttribute("Campo2", "2"),
                    new XAttribute("Campo3", Convert.ToString("3212")),
                    new XAttribute("Campo4", "33")
                    );
    Mas quando faço o comando no immediate   xml.Tostring(), ele retorna a mesma coisa 


    "<TESTE Campo1=\"1\" Campo2=\"2\" Campo3=\"3212\" Campo4=\"33\" />"

    Seria o caso de alterar o tipo de encoding?

    Alguem tem ideia do que posso tentar?

    Obrigado



    Analista Programador .Net www.fabner.com.br

    domingo, 27 de abril de 2014 19:40

Todas as Respostas

  • Olá,

    Ao que parece isso aí é psicológico! Está havendo algum problema na execução?

    Normalmente, durante o debug, quando você coloca o mouse sobre uma variável, são mostradas as barras de escape para escapar os caracteres especiais, mas se você clicar para abrir o visualizador verá que as barras não existem.

    Eu testei essa string que você passou em um compilador c# online e as barras não apareceram no Output!


    Herbert Lausmann

    domingo, 27 de abril de 2014 20:07
  • Olá Herbert,

    Eu gostaria mesmo que o problema fosse psicológico mas não é. rsrsrsrs

    Compiladores online não são uma boa alternativa para se testar isso. teste em projeto console.

    Quanto a execução, sim, há um problema justamente quando a procedure recebe esse valor que contem as barras.

    OBS: a procedure funciona normalmente. Se eu passar uma string teste com uma tag xml sem concatenações ela funciona normalmente.

    Abraço


    Analista Programador .Net www.fabner.com.br

    domingo, 27 de abril de 2014 22:46
  • Olá Herbert,

    Eu gostaria mesmo que o problema fosse psicológico mas não é. rsrsrsrs

    Compiladores online não são uma boa alternativa para se testar isso. teste em projeto console.

    Quanto a execução, sim, há um problema justamente quando a procedure recebe esse valor que contem as barras.

    OBS: a procedure funciona normalmente. Se eu passar uma string teste com uma tag xml sem concatenações ela funciona normalmente.

    Abraço


    Analista Programador .Net www.fabner.com.br

    Isso está sintaticamente perfeito, e o resultado é perfeito também tanto em aplicação Console quanto em Compiladores online. Contudo, você pode tentar assim:

    string xmlString = "<TESTE Campo1=" + char.ConvertFromUtf32(34) + "valor" + char.ConvertFromUtf32(34) + "/>";

    Se mesmo tentando da forma acima continuar com o problema, então não é nessa parte de código. Isso aí também é sintaticamente perfeito. Eu usava em Vb.NET por não haver a possibilidade de usar a \ para escapar caracteres. 34 é o código ASCII para a aspa dupla...

    Herbert Lausmann

    segunda-feira, 28 de abril de 2014 16:59