Bom pesquisei bastante sobre o XStream e ele me chamou muito a atenção pela enorme facilidade em gerar e ler arquivos XML. Bom mas eu tenho uma dúvida em relação a isso, quero consultar um nó específico de um XML. Por exemplo:
Gerar este XML não é o problema. Mas consultar um nó especifico deste XML que eu não consegui. Por exemplo quero somente carregar o Telefone da pessoa chamada Anderson. Vi na documentação que é possível facilmente converter o XML novamente no objeto “primitivo”, que no caso é seria o objeto Pessoa.
Pessoa anderson = (Pessoa) xstream.fromXML(xml);
Mas não quero carregar este objeto todo para conseguir tal informação, quero somente carregar o telefone da pessoa chamada Anderson. Como posso fazer isto utilizando o XStream?
Obrigado pela ajuda desde já.
Entendi… e como eu posso trabalhar com o Jdom para tal busca no XML? Tem algum exemplo simples? as buscas seriam simples… só queria carregar o objeto interio de um nó e não os valores de seus atributos individualmente.
É eu li o tutorial indicado e percebi uma maior complexidade. Mas este tutorial creio que não resolveria meu problema… vou expressa-lo de uma forma melhor. Seja o seguinte XML:
Bom no exemplo que vi no tutorial seria possível por exemplo pegar os nomes do Funcionário da empresa. Mas eu queria pegar o telefone deste funcionário (Anderson). O exemplo no tutorial não foi bem claro como isto é possível, alguém poderia me ajudar a respeito?
Já conseguiu resolver o problema?
Vê se isso ajuda.
db = dbf.newDocumentBuilder();
Document doc = db.parse(seu arquivo.xml);
//Passo 1: obter o elemento raiz (<Empresa>)
Element raiz = doc.getDocumentElement();
//Passo 2: localizar os elementos filhos do Empresa (<Funcionario>)
NodeList listaTipo = raiz.getElementsByTagName("Funcionario");
//Passo 3: obter os elementos de cada tipo Funcionario
for (int i=0; i<listaTipo.getLength(); i++){
//como cada elemento do NodeList é um nó, precisamos fazer o cast
Element tipo = (Element) listaTipo.item(i);
//Passo 4: obtém o Telefone de cada funcionario
NodeList listaNomes = tipo.getElementsByTagName("Telefone");
...
}
Juino, pelo que entendi é isso mesmo que ele quer, porém não tenho certeza se resolve muito, pois utilizando “Document doc = db.parse(seu arquivo.xml);” imagino que ele carregaria o arquivo inteiro em memória da mesma forma do Xtream, o que computacinalmente seria equivalente.
Dessa maneira ja aconselharia o uso do Xtream mesmo, por ser mais prático e de fácil manutenção.
Concordo com o douglaspaulino.
Bom qual seria a limitação de tamanho do XStream para carregar arquivos xml, a nível de performance? creio que meus arquivos não ultrapassariam 1 MB.
anderson,
nao sei responder essa pergunta nao rsrsrsrsrs.
mas imagine… esse xml irá gerar um objeto empresa e provavelmente uma lista de funcionarios, logo vc precisará ter memória suficiente para carregar essa lista.
mas quanto a performace nao sei te responder mesmo, pois utilizo o Xtream apenas para arquivos de configuração (1k) hehehe
Bom tenho a seguinte duvida ainda em relação ao XStream, tenho um XML relativamente com muitos nós, eu preciso montar uma estrutura igual de Objetos para carregar este XML em memória e manipula-los em objetos se eu for usar o XStream? Pois eu gostaria somente de carregar certos objetos, e por não conhecer a estrutura inteira do XML. Obrigado se alguém tiver alguma dica.
Consegui resolver meus problemas, com o metodo getChild… obrigado pelas dicas, mas quem me salvou foi o livro do Deitel sobre XML recomendo a todos!
Pode fechar o tópico