Existen elementos centrados en atributos y XML centrados en atributos, en su ejemplo, el primer elemento está centrado en el elemento, el segundo es centrado en atributos.
La mayoría de las veces, estos dos patrones son equivalentes, sin embargo, hay algunas excepciones.
atributo centrada
- tamaño más pequeño de elemento céntrica.
- 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 que admite valores NULL para algunos tipos de datos. p.ej. nullable int
- No se puede expresar el tipo complejo.
Elemento centrada
- tipo complejo puede ser solamente presenta como un nodo de elemento.
- Muy interoperable
- Tamaño más grande que el atributo centrado. (la compresión se puede utilizar para eliminar el tamaño significativamente)
- Los datos anulables se pueden expresar con el atributo xsi: nil = "true"
- Más rápido de analizar porque el analizador solo busca elementos para los datos del usuario.
práctica
Si realmente se preocupan por el tamaño de XML, el uso del atributo cada vez que pueda, si es apropiado, Deja la anulable, el tipo de complejo y nodo que va a llevar a cabo valor de texto grande como elementos, Si no le importa el tamaño de XML o tiene permiso de compresión durante la transferencia, quédese con los elementos. Es más extensible.
Antecedentes
En DOT NET, XmlSerializer puede serializar propiedades de los objetos en cualquiera de los atributos o elementos. En el framework 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 así Element vs attribute
XML centrado en atributos tiene una gran ventaja de interoperabilidad con JSON. Todo lo que necesita es algunos consejos sobre qué poner en una matriz y qué tratar como un número o booleano, y puede hacer conversiones automáticas perfectas. – PstScrpt