Recuperar tag de comentario em XML com XStream

Boa Tarde!

Estou manipulando uma estrutura XML com XStream e me deparei com uma situação que acredito que não seja tão comum. Preciso fazer a leitura de tags de comentário deste XML. Um exemplo da minha estrutura atual:

<estrutura> ... <!-- 2011-07-06 16:00:00 --> <coluna> <valor>1234</valor> <valor>5678</valor> </coluna> <!-- 2011-07-06 16:05:00 --> <coluna> <valor>8888</valor> <valor>9999</valor> </coluna> <!-- 2011-07-06 16:10:00 --> <coluna> <valor>5535</valor> <valor>2222</valor> </coluna> ... </estrutura>

Minha estrutura é bem maior que esta, e já faço toda leitura do arquivo, porém postei apenas a parte que interessa.
Gostaria de alguma dica de como recuperar as tags de comentários, utilizando XStream.

Obrigado!

[quote=brunovisk]Boa Tarde!

Estou manipulando uma estrutura XML com XStream e me deparei com uma situação que acredito que não seja tão comum. Preciso fazer a leitura de tags de comentário deste XML. Um exemplo da minha estrutura atual:

<estrutura> ... <!-- 2011-07-06 16:00:00 --> <coluna> <valor>1234</valor> <valor>5678</valor> </coluna> <!-- 2011-07-06 16:05:00 --> <coluna> <valor>8888</valor> <valor>9999</valor> </coluna> <!-- 2011-07-06 16:10:00 --> <coluna> <valor>5535</valor> <valor>2222</valor> </coluna> ... </estrutura>

Minha estrutura é bem maior que esta, e já faço toda leitura do arquivo, porém postei apenas a parte que interessa.
Gostaria de alguma dica de como recuperar as tags de comentários, utilizando XStream.

Obrigado![/quote]
Porque nao fazer do comentario um atributo (nao elemento) de coluna?

Cara, desculpe o mal jeito, mas se uma informação precisa ser recuperada, ela precisa estar entre tags válidos.

Se o comentário é uma informação importante, ele não devia estar em comentário.

Quem montou esse XML e colocou esses comentários ali, poderia muito bem colocar essas informações em tags válidas de algum tipo.

Comentários em XML são anotações para uso interno de quem o produziu para que tiver de dar manutenção posterior.

Não podem ser usados para guardar informação válida e essencial.

dreampeppers99 e JoaoBluSCBR,

Obrigado pelo retorno.

Mas na verdade recebo este XML de uma outra aplicação, ja recebo a estrutura definida. Só faço a leitura.

Este XML é gerado automaticamente de hora em hora por esta outra aplicação que citei, e esta tag de comentário com a hora sempre vai existir entre as tags <coluna>.

Obrigado!

Podes usar outro parser ou mesmo regex, mas acho que deve insistir que esse atributo seja persistido.

[quote=brunovisk]dreampeppers99 e JoaoBluSCBR,

Obrigado pelo retorno.

Mas na verdade recebo este XML de uma outra aplicação, ja recebo a estrutura definida. Só faço a leitura.

Este XML é gerado automaticamente de hora em hora por esta outra aplicação que citei, e esta tag de comentário com a hora sempre vai existir entre as tags <coluna>.

Obrigado![/quote]

Até entendo, mas essa outra aplicação deve vir de uma empresa que pode ser contatada e pedir que coloquem essa informação como atributo.

Seria até uma contribuição explicando o motivo.

Bem, se você não tem como mudar isso, o negócio é ler o arquivo como texto e coletar as informações, mas vai ser uma trabalheira meio insana. kkkkkk

Se o teu exemplo é fiel, o primeiro horário vem seguido do segundo de 5 em 5 minutos.

Então bastaria ler o primeiro comentário para saber a hora inicial e

depois usar SAX e ler separando e sabendo que as informações são de tanto em tanto tempo após.

Só uma idéia.

Ou crie seu próprio parser extendendo um outro.

E sobrescreva o método em que ele descarta os comentários
com um seu que faça a leitura deles.

Algo assim:


import javax.xml.parsers.*;
import org.xml.sax.Parser;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.XMLReader;

public class NovoParser extends SAXParser {

    @Override
    public Parser getParser() throws SAXException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public XMLReader getXMLReader() throws SAXException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean isNamespaceAware() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean isValidating() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}