Xml

6 respostas
ricardocomp

Olá Pessoal,
Eu já não sei mais o que fazer!
Será q alguém poderia me ajudar
nesse desespero maluco q eu tô?
ñ tá tendo jeito!
Eu tenho duas classe:

public class PermissionManagerHandle implements PermissionManager{
	
	public PermissionManagerHandle(String xml) throws MarshalException, ValidationException, FileNotFoundException{
		PermissionManagerXML permissions = (PermissionManagerXML) Unmarshaller.unmarshal(PermissionManagerXML.class, new FileReader(xml));
		System.out.println("Permissões para read: " + permissions.getAdduser());
	}

	@Override
	public boolean isAuthorized(JAAFSystemUser user, String operation) {
		// TODO Auto-generated method stub
		return false;
	}
}
public class PermissionManagerXML implements PermissionManager {
private String read;
public String getRead() {
		return read;
	}

public void setRead(String read) {
	this.read = read;
}
}

que pegam o xml:

<permissions>
<read>admin manager user</read>
</permissions>

e com metodo unmarshal transformam o xml para o Java
at’e aqui d’a tudo certo s’o q eu preciso
modificar a classe PermissionManagerXML
para que ela pegue esse xml:

<permissions>
	<read>
		<group>admin</group>
		<group>manager</group>
		<group>user</group>
	</read>
</permissions>

e nao o do exemplo
de cima.

Alguém sabe como que eu faço isso?
Será q alguém poderia me ajudar?

[]'s

6 Respostas

Felagund

não sei se é a melhor maneira, mas vc pode criar uma classe Read, com uma lista de String chamada groups.

Algo nesse estilo assim.

renzonuccitelli

Olhá, se por acaso vc vai ter os dois tipos de xml, vc poderia fazer isso facilmente com o JColtrane. Com a anotação BeforeElement, vc poderia ver se os dados do read estão no elemento read ou group, e como as coisas já estão funcionando com sua string simples, vc poderia apenas concatenar as string encontradas no elementos group de forma que fiquem no mesmo formato anterior, ou seja, sepadas pelo espaço. Vou codificar o parser aqui, qdo tiver tempo, e posto aki.

ricardocomp

Muito obrigado pela ajuda FelaGund,
vou tentar implementar o que
você me falou.

Abração.

ricardocomp

Muito obrigado pela ajuda
renzonuccitelli, mas eu não preciso
usar os tipos de xml, eu só vou precisar
usar o xml com as tag’s
Abração.

renzonuccitelli
public class PermissionManager{
	StringBuilder readPermissions =new StringBuilder("");
	@EndElement(tag="read")
	private void pegarPermissoesDiretamenteDoElementRead(@Body(newLine=false,tab=false) String body){
		readPermissions.append(body);
	}

	@BeforeElement(elementDeep=1, tag="read")
	@EndElement(tag="group")
	private pegarPermissoesDosGroups(@Body(newLine=false,tab=false) String body){
		if("".equals(readPermissions.toString){
			readPermissions.append(body);
		}
		else{
			readPermissions.append(" "+body);
		}
	}

	public String getPermissions(){
		return readPermissions.toString();
	}
		

}

Dá uma olhada aí na classe. Basta vc fazer o parse utilizando a mesma, como o site do projeto indica. Dá uma olhada tb pra conferir o código, to no trablho e sem IDE, e fiz rápido...

renzonuccitelli

Bom se vc só vai precisar do group, ainda assim a classe que fiz iria funcionar. A única coisa que o primeiro método nunca seria executado, então poderia ser retirado da calsse. D qq forma, fica aí a propaganda do projeto…hehe

Criado 31 de março de 2009
Ultima resposta 1 de abr. de 2009
Respostas 6
Participantes 3