É possível por meio de um atributo de algum tipo serializar uma string como CDATA usando o .Net XmlSerializer?
c#
.net
xml-serialization
Jamesaharvey
fonte
fonte
CDataContent
se estiver apenas lendo XML.XmlSerializer.Deserialize
irá transformá-lo automaticamente em texto para você.Respostas:
fonte
Uso:
Resultado:
fonte
XmlDocument().CreateCDataSection(MyString ?? String.Empty);
Além da maneira postada por John Saunders, você pode usar um XmlCDataSection como o tipo diretamente, embora resulte praticamente na mesma coisa:
fonte
Na classe a ser serializada:
E a classe CData:
fonte
No meu caso estou usando campos mistos, alguns CDATA outros não, pelo menos para mim a seguinte solução está funcionando ....
Sempre lendo o campo Valor, estou obtendo o conteúdo, seja CDATA ou apenas texto simples.
Antes tarde do que nunca.
Felicidades
fonte
Eu tinha uma necessidade semelhante, mas exigia um formato de saída diferente - queria um atributo no nó que contém o CDATA. Tirei alguma inspiração das soluções acima para criar a minha própria. Talvez ajude alguém no futuro ...
No objeto pai a ser serializado, tenho a seguinte propriedade:
Eu obtenho a seguinte saída:
fonte
Essa implementação tem a capacidade de processar CDATA aninhado dentro da string que você está codificando (com base na resposta original de John Saunders).
Por exemplo, suponha que você queira codificar a seguinte string literal em CDATA:
Você gostaria que a saída resultante se parecesse com isto:
O ciclo seguinte implementação vontade sobre a corda, dividida instâncias de
...]]>...
em...]]
e>...
e criar seções CDATA separados para cada.fonte