2012-06-13 18 views
5

Estoy usando XDocument para almacenar en caché una lista de archivos.¿Cuál es la forma correcta de almacenar un nombre de archivo en XML?

<file id="20" size="244318208">a file with an &amp;ersand.txt</file> 

En este ejemplo, he utilizado XText y lo dejaron escapar automáticamente los caracteres del nombre de archivo, como el & con &amp;

<file id="20" size="244318208"><![CDATA[a file with an &ersand.txt]]></file> 

En éste, solía XCData para dejarme usar una cadena literal en lugar de una escapada, por lo que aparece en el XML como lo haría en mi aplicación.

Me pregunto si alguno de ellos es mejor que el otro bajo ciertas condiciones, o si se trata de un gusto personal. Además, si significa algo, los nombres de los archivos pueden contener o no caracteres ilegales.

Respuesta

3

Ambos son esencialmente iguales y no hay una "mejor práctica" específica.

Personalmente, reservo <![CDATA[]]> para grandes cantidades de texto que requieren mucho escape (digamos bits de código o marcado HTML).

En este caso específico, preferiría escapar de & a &amp; como en el primer ejemplo.

0

No importa.
Ambos son XML válidos, y ambos tienen el mismo significado.

5

no lo haría explícitamente el uso ya sea XText o XCData - que acababa de proporcionar una cuerda y dejar que LINQ to XML haga lo que quiera.

Creo que la versión que no es de CDATA generalmente es más clara. Sí, se escaparon los amperandos, y < también lo estarán, pero eso todavía es mucho menos pelusa que la sección de inicio/finalización de CDATA.

No olvide que debe ser raro que los seres humanos vean la representación XML en sí, la idea es que es un transporte de información que es razonablemente legible en esa representación cuando necesite. Yo no me pondría demasiado pendiente al respecto.

1

La mayoría de los nombres de archivo no contendrán signos y símbolos, o menos. Entonces ve con XText. Reserve XCData para casos en los que espere muchos de esos caracteres, como cuando incrusta y fragmento de HTML en un documento XML.

Justificación: la diferencia en la utilización de CPU para serializar y analizar texto es completamente insignificante. Pero hay una (pequeña) diferencia en almacenamiento, ancho de banda o necesidades de memoria. Todo lo demás es igual, use el formato que usa menos espacio (incluso si las diferencias son pequeñas).

Cuestiones relacionadas