O que é uma boa forma de codificação arbitrária de texto em XML em uma forma legível?

StackOverflow https://stackoverflow.com//questions/9608978

  •  09-12-2019
  •  | 
  •  

Pergunta

O que eu tenho até agora é colocar o texto em CDATA tags, e lidar com a possibilidade de CDATA finais que aparecem no texto, dividindo-o em vários adjacentes CDATAs.

Eu não tenho certeza sobre isso, mas analisadores de XML pode falhar para preservar quebras de linha dentro do CDATA tags, correto?Isso significaria fugir delas, de alguma forma, bem...

Eu quero gerar esses arquivos XML utilizando a linguagem Perl, e analisá-los com C++ (usando expat), Java, e C#.

O mais importante, eu quero que os arquivos resultantes para ser um pouco humano-legível/modificável.Alguém sabe de qualquer esquema de codificação que atenda a essas necessidades?Eu estou usando isso para armazenar dados de um banco de dados, portanto, ele precisa aceitar o texto arbitrário, e após a análise devolver exactamente o mesmo texto.

Foi útil?

Solução

XML já suporta isso, você não precisa fazer nada de especial e você certamente não precisa usar o CDATA.Basta usar uma biblioteca decente, certifique-se de que esteja usando a codificação UTF-8 e adicione um nó de texto.Se algo está "perdendo" newlines, então é um bug.O XML já tem uma "codificação" (escapando) que é relativamente legável humana.Também é padrão, o que torna muito mais útil do que inventar o seu próprio.

ver, por exemplo https://stackoverflow.com/a/1140802/181772

Outras dicas

Você pode codificar o conteúdo, se o conteúdo HTML, por exemplo:

<html>&lt;b&gt;Bold Text&lt;/b&gt;</html>

vs.

<html><![CDATA[<b>Bold Text</b>]]></html>

Hmm, na medida em que posso dizer que as seções do CDATA são para dados de caracteres, e os caracteres de controle não contam.Eu suponho que isso significa que, sobre o assunto de novas linhas, os analisadores XML fazem um julgamento sobre se são um caractere de controle ou não (historicamente, sim, mas praticamente ... não.).

Embora prejudique a legibilidade, você pode codificar newlines usando sequências de escape, Assumindo que você está escapando corretamente, a parsing deve convertê-lo corretamente, você só terá que anotar isso ao codificar.

Outra opção, que viola completamente o seu requisito "legível por humanos" é basear-se-64 codificar o texto, isso permite codificar informações arbitrárias no XML.

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