Caminho XML - Dúvida SAX

Olá pessoal!

Estou fazendo um programa, que utiliza SAX, para encontrar os caminhos e atributos do xml.

O problema é:

Estou deixando os caminhos fixos (e para alguns casos isto está ok)…
Mas para outros casos… necessito que seja variável.

Exemplo:
Tenho essa variável declarada -->
public String caminhoHeadingFed = “AtoLegal/DOCUMENT/LEVEL/LEVEL/LEVEL/RECORD/HEADING”;

Nesse caso… eu preciso “transformar” isso… para:
“qualquer coisa”/LEVEL/RECORD/HEADING

Será que alguém, pode me ajudar?

Obrigada

Vc poderia usar a classe Properties e deixar esses caminhos em arquivos de configuração, havendo necessidade de mudança basta mudar o arquivo properties.

http://www.guj.com.br/java.tutorial.artigo.35.1.guj

Pode não ser a melhor solução, mas uma das alternativas é vc fazer o seguinte:

para achar se o path é:

sabendo que o path atual está em um string, vc pode varre o string de trás para frente até achar n “/”, onde n é igual ao numero de barras do semi path que vc quer, aí vc verifica a posição da ultima e faz:


String pathParcial = "/LEVEL/RECORD/HEADING";

// acha o numero de barras no path parcial
int numBarras = achaNumeroDeBarras(pathParcial);

// acha o posição da barra x no seu path (de tras pra frente)
int posBarraX = achaBarraX(meuPath, numBarras);


if (meuPath.subString(posBarraX, meuString.length()).equals(pathParcial))
    system.out.println("path final encontrado");

talvez resolva…

ve se era isso mesmo que vc queria, se naum podemos tentar outra coisa

Oi,
Então… isso não resolveu…

Talvez o meu exemplo não foi muito claro…
Por exemplo:

No meu arquivo xml, eu tenho essa tag:

<outline><Ementa><Texto>Aprova o Regulamento do Imposto sobre Operações Relativas à Circulação de Mercadorias e sobre Prestações de Serviços de Transporte Interestadual e Intermunicipal e de Comunicação - <k2:xref><k2:xrefin xlink:type=“simple” xlink:label=“ES-ES+D+1090-R+2002” k2:destElementId=“ES-ES+D+1090-R+2002” k2:destDoctype=“Legislation” xlink:href=“ES-ES+D+1090-R+2002” xlink:actuate=“onrequest” k2:istitle=“T”>RICMS/ES</k2:xrefin></k2:xref> -, que consolida e atualiza a legislação do imposto e dá outras providências.</Texto></Ementa></outline>

Na verdade, eu preciso “varrer” o conteúdo dentro dessa tag outline…
Eu não quero delimitar o caminho… preciso armazenar todo o conteúdo e passar para um método.

Alguém pode me ajudar?
Obrigada

Nao sei se entendí, mas vc precisa somente da tag outline e das suas filhas ?
Se for isso vc pode usar XPATH. Não sei se da pra fazer com SAX, mas com DOM dá, ficaria algo como:

NodeList nodeList = XPathAPI.selectNodeList(doc, "//outline");

Se vc for fazer com SAX, é só vc armazenar tudo a partir do momento q vc encontrou a tag outline (startElement), e parar de armazenar qdo evento endElement para a tag outline for chamado.

Utilizando o JColtrane (http://sourceforge.net/projects/jcoltrane/) Você faria assim:

public class EncontradorDeCaminho {
	
	@StartElement
	public void executarAlgo(@CurrentBrunch String brunch, @AttributeMap Map mapaDeAtributos){
		if(brunch.endsWith("/LEVEL/RECORD/HEADING")){
			//usar aqui o mapa de atributos para acessar os atributos
		}
		
	}
}