Pergunta

Eu estou construindo um parser XML em conformidade e validação em C ++ e tentar torná-lo leve para uso em pocket pc.

No início eu decidi adicionar alguns "eventos" para o meu parser SAX como faz, informando sobre elementos, instruções de processamento, etc.

Esses eventos são tomadas por uma classe derivada que cria a árvore DOM do XML.

As minhas dúvidas aparece quando se tenta lidar principalmente entidades (que podem conter elementos, pi do e comentários dentro se definido) e sua resolução.

Por exemplo, é possível criar uma classe XMLEntityRef que se refere a algum XMLEntity definido em algum objecto XMLDocType como NET system.xml analisador faz.

Como eu sei, na maioria dos casos um aplicativo precisa saber um elemento, o seu conteúdo, seus respectivos atributos e seus respectivos valores ... apenas strings ... ele não se importa se o conteúdo do elemento é formado por objetos cdata , referências de entidade e / ou texto simples ... o mesmo se aplica aos valores de atributos.

Então, minha pergunta é a seguinte: Qual é o benefício de passar para uma aplicação cada objeto XML como ele aparece e deixá-lo (ou uma classe auxiliar) para construir, por exemplo, o valor do atributo resultando concatenando textos e resolvido referências de entidade?

Se eu estou fazendo uma pesquisa, por favor resposta: faz sua necessidade de aplicação de saber sobre tags CDATA e onde eles estão localizados no arquivo xml, ou você tornar as coisas fáceis ... você quer saber o valor conteúdo completo um elemento em uma seqüência sem se preocupar sobre como ele é edificada?

Com os melhores cumprimentos, Mauro H. Leggieri

Foi útil?

Solução

Eu estou construindo um parser XML em conformidade e validação em C ++ e tentar torná-lo leve

Não existe tal coisa como um peso-leve conformes (não importa validar) parser. Para ser um analisador conformando você tem que entender todas as coisas que podem ir em um subconjunto externo DTD, que é um trabalho gnarly, de fato. É uma vergonha que a especificação XML acabou sobrecarregado com todo o crud SGML DTD, mas nós está preso com ele agora.

faz sua necessidade de aplicação de saber sobre tags CDATA e onde eles estão localizados no arquivo xml

Normalmente não. DOM Nível 3 LS exige que seções CDATA ser mantido em nós CDATASection no DOM por padrão, mas quase sem cuidados de aplicação.

(Se a pergunta é sobre minha aplicativo, em seguida, sim, porque minha aplicação é um sistema de templates que mantém seções CDATA onde eles estavam. Mas, ainda assim.)

As minhas dúvidas aparece quando se tenta lidar principalmente entidades

Sim Deus. referências de entidade são um desastre total. Fazendo um suporte de implementação DOM-los de uma forma que seja compatível com DOM Nível 3 Núcleo / LS é muito, muito complicado. Evite, se possível.

Outras dicas

geralmente xml não é leve. Você é melhor fora com JSON.

Ao construir um analisador Eu não acho que você deve presumir nada sobre como os aplicativos irão consumir o XML, em vez disso, fornecer o nível mais granular de dados para cada nó XML para fornecer o máximo de flexibilidade. Embora isso possa exigir mais trabalho por parte de aplicações que consomem, eles serão capazes de realizar tudo o que eles precisam. Boa sorte.

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