Pergunta

Eu venho fazendo um monte de processamento de XML em C # da tarde e depois de voltar para C # a partir de um longo javascript stint codificação estou realmente faltando alguns dos bons atalhos de JS.

Eu tenho ir um documento XML considerável composta de muito para elementos, elementos filho, etc. Representando Acomodações / Voos / bilhetes atração para uma reserva online.

Até agora tenho sido apenas Xpathing através do documento para retirar a necessidade informação que eu. Eu já começou a mover-los em funções auxiliares. Assim, por exemplo, pode querer mudar a forma como processamos uma reserva se tiver um voo de um terceiro. Isso é fácil de verificar com o XPath que acabamos de verificar o valor de um elemento. Então, eu tenho uma função auxiliar que faz exatamente isso assim que meu XPath é apenas em um lugar e retorna um bool. Eu só tenho cerca de uma dúzia deles e até agora tenho vindo a tratar a coisa toda como uma reserva, mas nós acabamos de fazer algum trabalho que era tudo sobre o elemento vôo da reserva e os últimos 4 ajudantes I 'acabou de criar são muito vôo relacionados que me fez pensar se eu estou fazendo este direito.

Eu tenho evitado a necessidade de converter todo o documento em um objeto, uma vez que seria apenas muito, muito doloroso para fazer devido ao seu tamanho e, atualmente, a sua não foi necessário, ainda não é realmente. Criar todos os objetos seria uma dor enorme e eu tenho trabalhado em projetos semelhantes em que essa rota foi feito e isso só dói tentar depurá-lo ou initally obter a sua cabeça em torno dela. Nós não estamos usando todos os documentos, o processamento estamos fazendo mal usa 10% do mesmo modo de-serializadas tudo parecia um pouco mais de engenharia. Deserialising-lo em JS seria uma brisa, mas C # só faz isso ser tão prolixo. Eu sei que eu poderia usar XSD.exe para tirar um pouco da dor, mas eu acho que essa bagunça para uso sem um bom esquema (que, naturalmente, não existe).

Mas isso me fez pensar, deve sempre criar uma enorme coleção de objetos do nosso XML ou é a maneira rápida eu fiz isso ainda acceptible? Estou feliz com isso, mas apenas tentando pensar sobre isso, se Objects seria uma maneira melhor. É que se converteu tudo, então, pelo menos ela estaria disponível meter precisávamos em projetos futuros.

Estou ciente de que não seja talvez alguns comentários sobre a velocidade da xpathing tudo, mas seu rápido o suficiente para o que queremos atualmente tão isso não é um problema aqui.

Quaisquer pensamentos sobre se estou ok para continuar XPathing?

Foi útil?

Solução

Se você tem um esquema XML (XSD), então eu provavelmente sempre preferem o deserialize a abordagem objeto -. É apenas mais fácil e mais limpa para trabalhar com objetos CLR agradáveis ??

Se você não tem um esquema XML, e não pode obter um a partir da fonte / fornecedor dos seus dados, em seguida, a decisão não é muito clara. Como você diz, XSD.EXE pode tirar um pouco da dor fora da equação, mas como um esquema XML inferido é tipicamente perfeito nem frequentemente muito bonita.

pergunta difícil - se você se sentir confortável com o uso de XPath para navegar no seu XML, eu cumpri-lo. Se você tiver XML que você precisa analisar muito frequentemente, talvez criando um XSD pode ser uma boa idéia no final.

Outras dicas

Sim, se você só precisa de 10% do XML, XPathing parece ser OK aqui devido à possível exagero desserialização.

Em C # 4.0 e DLR há um dinâmica palavra-chave que permite explorar de forma dinâmica estrutura XML.

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