En el hilo What’s your favorite “programmer ignorance” pet peeve?, aparece la siguiente respuesta, con una gran cantidad de upvotes:¿Qué tiene de malo la creación de XML con la concatenación de cadenas?
Programmers who build XML using string concatenation.
Mi pregunta es, ¿es la construcción de XML a través de la concatenación de cadenas (como un StringBuilder
en C#) malo?
He hecho esto varias veces en el pasado, ya que a veces es la forma más rápida de llegar del punto A al punto B cuando se trata de las estructuras/objetos de datos con los que estoy trabajando. Hasta ahora, he encontrado algunas razones por las cuales este no es el mejor enfoque, ¿pero hay algo que estoy pasando por alto? ¿Por qué debería evitarse esto?
- Probablemente la razón más importante que puedo pensar es que necesita escapar de sus cadenas manualmente, y la mayoría de los programadores nuevos (e incluso algunos programadores experimentados) lo olvidarán. Funcionará muy bien para ellos cuando lo prueben, pero luego "aleatoriamente" sus aplicaciones fallarán cuando alguien arroje un símbolo & en alguna parte. Ok, compraré esto, pero es realmente fácil evitar el problema (SecurityElement.Escape para nombrar uno).
- Cuando hago esto, generalmente omito la declaración XML (es decir,
<?xml version="1.0"?>
). ¿Esto es dañino? - ¿Penalizaciones de rendimiento? Si sigue con la concatenación de cadenas adecuada (es decir,
StringBuilder
), ¿le preocupa esto? Presumiblemente, una clase comoXmlWriter
también necesitará hacer un poco de manipulación de cadenas ... - Existen formas más elegantes de generar XML, como usar
XmlSerializer
para serializar/deserializar automáticamente sus clases. Ok seguro, estoy de acuerdo. C# tiene un montón de clases útiles para esto, pero a veces no quiero hacer una clase para algo realmente rápido, como escribir un archivo de registro o algo así. ¿Esto solo soy yo perezoso? Si estoy haciendo algo "real", este es mi enfoque preferido para tratar con w/XML.
ah, muy bueno. solo el tipo de respuesta que estaba buscando. – wsanville
+1 - A menudo es el consumidor del XML dañado el que tiene la tarea de intentar encontrar una solución para el quebrantamiento. ¡ES POR ESO QUE ESTO OBTENGA LA ROTULA DE UN "PEOPE CARO"! –
+1 - Como algunos "XML" que tengo que analizar donde las entidades son numéricas. Aarghle. – Rob