Inquiridor
Criar XML com aspas duplas no C#

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
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
-
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
-
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