Pregunta

Estoy creando una aplicación que almacenará una colección jerárquica de elementos en un archivo XML y me pregunto cuál es el estándar de la industria para almacenar colecciones en XML.¿Cuál de los siguientes dos formatos se prefiere?(Si hay otra opción que no veo, por favor avise).

Opción A

<School>
    <Student Name="Jack" />
    <Student Name="Jill" />
    <Class Name="English 101" />
    <Class Name="Math 101" />
</School>

Opción B

<School>
    <Students>
        <Student Name="Jack" />
        <Student Name="Jill" />
    </Students>
    <Classes>
        <Class Name="English 101" />
        <Class Name="Math 101" />
    </Classes>
</School>
¿Fue útil?

Solución

No soy un experto en XML, pero creo que la opción B es más legible para los humanos y creo que es tan legible para las máquinas como la opción A.Creo que XML está diseñado para ser legible tanto por humanos como por máquinas, por lo que yo elegiría la opción B.


Me acabo de dar cuenta de algo más después de la publicación de Ryan Farley.Si la sección Estudiantes o Clases se vuelve demasiado grande y debe moverse a otro archivo XML, parece que sería más fácil copiar el nodo y crear un nuevo archivo XML a partir de ese nodo con la Opción B.

Otros consejos

Definitivamente - Opción B.

No mezclaría estudiantes y clases en XML de la misma manera que no mezclaría estudiantes y clases en la misma tabla en una base de datos.

Otra razón de peso para utilizar la opción B es la comprobación de errores.Si el archivo original se modifica fuera de una aplicación XML, o si no se aplica ningún esquema XSD, podría darse el caso de que tenga un número impar de estudiantes y clases.

Al menos si tienes los estudiantes y las clases agrupados, podrás saber fácilmente si cada registro está completo, independientemente de cualquier otro registro.

Opción B, absolutamente.Cuando hay una agrupación lógica de elementos similares, debe tener un elemento principal.De esa manera, mi analizador no tendrá que revisar los 500 registros de estudiantes para ver si hay registros de clase mezclados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top