Parseando um XML com CDATA

Pessoal, eu tenho um arquivo XML que preciso parsear, onde o conteudo de cada tag estava com a notacao “CDATA”.

Como fazer para ler o conteudo sem receber junto a tag CDATA no conteudo?

<sql filteredBy="geo" desc="Second Choice">
	<![CDATA[
                          select * from table1 where att >&lt= 1
	]]&gt
</sql>

quero somente: "select * from table1 where att &lt= 1"

Com o DOM, por exemplo, eu poderia setar essa propriedade para criar um novo arquivo que iria transformar todo o conteudo sem a notacao CDATA.

factory.setCoalescing(true);

Mas eu ja estou utilizando o Digester para parser…existe uma forma normal (padrao, sem DOM) de fazer isso ?

tks galera!! ;0

ninguem ?:frowning:

Como vc está fazendo para ler esse campo CDATA do Xml?

Experimente usar o XStream nos seus aplicativos.

Oi Marcio…entao…ja estou usando o framework Digester…

eu nao posso trocar…tem que ser com ele mesmo…
Acho que o XStream cai no mesmo problema…o problema nao e como chegar na tag e ler a tag, e sim o conteudo da tag…acho que deve ter uma forma padrao de fazer isso…mas nao achei ainda…

eu sei que com dom4j da pra fazer isso…mas no caso. se eu estivesse usando tanto o Digester ou o Xstream…como eu faria…entende?

tks
[]'s

moderadores, este título está invalidando o RSS do GUJ. podem trocar para somente CDATA ??

valeu!

Consegui parsear com o código abaixo:

import java.io.IOException;
import java.io.StringReader;

import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;


public class ParseXML {

	public static void main(String[] args) {

		Digester digester = new Digester();

		digester.addObjectCreate("sql", Sql.class);
		digester.addSetProperties("sql", "filteredBy", "filteredBy");
		digester.addSetProperties("sql", "desc", "desc");
		digester.addCallMethod("sql", "setValue", 0);

		String xml = "<sql filteredBy=\"geo\" desc=\"Second Choice\">"
				+ "<![CDATA[select * from table1 where att <= 1 ]]>  "
				+ "</sql> ";

		try {
			Sql sql = (Sql) digester.parse(new StringReader(xml));
			System.out.println(sql.getValue());
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		}
	}
}


public class Sql {
	String filteredBy;
	String desc;
	String value;
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	public String getFilteredBy() {
		return filteredBy;
	}
	public void setFilteredBy(String filteredBy) {
		this.filteredBy = filteredBy;
	}
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}
}