vacios son que los las etiquetas elementos ejemplos cuales crear con como basicas atributos atributo xml

son - Mejores prácticas de XML: atributos frente a elementos adicionales



etiquetas xml (6)

Esta pregunta ya tiene una respuesta aquí:

¿Cuál es la diferencia entre los dos y cuándo debo usar cada uno?

<person> <firstname>Joe</firstname> <lastname>Plumber</lastname> </person>

versus

<person firstname="Joe" lastname="Plumber" />

Gracias


En el futuro, cuando agregue una propiedad <address> , no querrá convertirlo en un atributo XML. Esto se debe a que una <address> podría ser un elemento más complejo compuesto por dirección, ciudad, país, etc.

Por esta razón, es posible que desee elegir el primer formulario de subelemento a menos que esté realmente seguro de que el atributo no tendrá que ir mucho más profundo. La primera forma permite una mayor extensibilidad en el futuro.

Si le preocupa el espacio, comprima su XML.


En mi compañía, preferiríamos el segundo enfoque.

La forma en que pensamos es que "firstname" y "lastname" son atributos del nodo "persona", en lugar de subcampos del nodo "persona". Es una diferencia sutil.

En mi opinión, el segundo enfoque es más conciso y la legibilidad / mantenibilidad se mejora significativamente, lo cual es muy importante.

Por supuesto, dependerá de tu aplicación. No creo que haya una regla general que cubra todos los escenarios.


En su ejemplo, hay elementos centrados en atributos y centrados en atributos, el primero está centrado en los elementos, el segundo está centrado en los atributos.

La mayoría de las veces, estos dos patrones son equivalentes, sin embargo, hay algunas excepciones.

Atributo centrado

  • Tamaño más pequeño que elemento céntrico.
  • No es muy interoperable, ya que la mayoría de los analizadores XML pensarán que los datos del usuario son presentados por el elemento, los atributos se usan para describir el elemento.
  • No hay forma de presentar el valor anulable para algún tipo de datos. por ejemplo, nullable int
  • No se puede expresar el tipo complejo.

Elemento centrado

  • El tipo complejo solo se puede presentar como un nodo de elemento.
  • Muy interoperable
  • Tamaño más grande que el atributo centrado. (la compresión puede usarse para eliminar el tamaño significativamente)
  • Los datos anulables se pueden expresar con el atributo xsi: nil = "true"
  • Más rápido de analizar, ya que el analizador solo busca elementos para los datos del usuario.

Práctico

Si realmente te importa el tamaño de XML, utiliza el atributo siempre que puedas si es apropiado. Deja el tipo y nodo que admite nulos que va a contener un gran valor de texto como elementos. Si no te importa el tamaño de XML o si tienes permitir la compresión durante el transporte, seguir con los elementos. Es más extensible.

Fondo

En DOT NET, XmlSerializer puede serializar propiedades de objetos en atributos o elementos. En el marco WCF reciente, el serializador DataContract solo puede serializar propiedades en elementos y es más rápido que XmlSerializer, la razón es obvia, solo necesita buscar datos de usuario de los elementos mientras se deserializa.

Aquí un artículo lo explica también Elemento vs atributo


Encontré la siguiente información muy útil para explicar la elección de los atributos frente a los elementos de una manera breve

Algunos de los problemas con el uso de atributos son:

los atributos no pueden contener múltiples valores (los elementos pueden)
los atributos no pueden contener estructuras de árbol (los elementos pueden)
los atributos no son fácilmente expandibles (para futuros cambios)

Los atributos son difíciles de leer y mantener. Usa elementos para datos. Use atributos para información que no es relevante para los datos.

fuente: http://www.w3schools.com/xml/xml_attributes.asp


Los atributos no son sensibles a los pedidos. Esto puede ser una ventaja o una desventaja dependiendo de su situación.

Los atributos no pueden ser duplicados. Si "Joe" tiene dos nombres, entonces los nodos son el único camino a seguir.


También es posible que desee ver las respuestas a esta pregunta que planteé hace un tiempo. Encontré las respuestas útiles.