Pergunta

Estou criando um aplicativo que armazenará uma coleção hierárquica de itens em um arquivo XML e estou pensando sobre o padrão da indústria para armazenar coleções em XML.Qual dos dois formatos a seguir é preferido?(Se houver outra opção que não estou vendo, informe.)

Opção A

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

Opção B

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

Solução

Não sou especialista em XML, mas acho que a Opção B é mais legível por humanos e acho que é tão legível por máquina quanto a Opção A.Acredito que o XML foi projetado para ser legível por humanos e por máquinas, então eu mesmo escolheria a Opção B.


Acabei de perceber outra coisa depois da postagem de Ryan Farley.Se a seção Alunos ou Turmas ficar muito grande e precisar ser movida para outro arquivo XML, parece que seria mais fácil copiar o nó e criar um novo arquivo XML a partir desse nó com a Opção B.

Outras dicas

Definitivamente - Opção B.

Eu não misturaria alunos e turmas no XML da mesma forma que não misturaria alunos e turmas na mesma tabela de um banco de dados.

Outro motivo convincente para usar a opção B é a verificação de erros.Se o arquivo original for modificado fora de um aplicativo XML ou se nenhum esquema XSD for aplicado, poderá haver um número ímpar de alunos e turmas.

Pelo menos se você tiver os alunos e as turmas agrupados, poderá facilmente saber se cada registro está completo, independentemente de qualquer outro registro.

Opção B, absolutamente.Quando há um agrupamento lógico de itens semelhantes, deve haver um item pai.Dessa forma, meu analisador não terá que percorrer todos os registros de 500 alunos para verificar se há registros de turma misturados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top