XML qual diferença neste 2 modos

Pessoal to tentando ler um xml, mas o arquivo da erro dizendo que tem item duplicado, e o arquivo que estou lendo está + - igual ao segundo modo abaixo, mas antes queria saber qual a diferença nessas duas estruturas abaixo:

<pessoa>
   <nome> GUJ </nome
   <carro>GOL </carro>
   <carro>PALIO</carro>
</pessoa>

qual diferença desse acima pra este:

<pessoa nome="GUJ" carro="GOL" carro="PALIO"/> 

agradeço.

Utilizando atributos, eles devem ser únicos!

<pessoa nome="GUJ" carro="GOL" carro="PALIO"/>

Já com lista de filhos não.

<pessoa> <nome> GUJ </nome> <carro>GOL </carro> <carro>PALIO</carro> </pessoa>

O mais correto seria você fazer assim:

<pessoa> <nome> GUJ </nome> <carros> <carro>GOL </carro> <carro>PALIO</carro> </carros> </pessoa>

Talvez tenha alguma API por ai maluka que não exija essa regra de atributos únicos, mas “a regra é clara” rsrs.

Falows

Corretíssimo Arnaldo… a regra é clara hahahaha

[quote=victor.godinho]Utilizando atributos, eles devem ser únicos!

<pessoa nome="GUJ" carro="GOL" carro="PALIO"/>

Já com lista de filhos não.

<pessoa> <nome> GUJ </nome> <carro>GOL </carro> <carro>PALIO</carro> </pessoa>

O mais correto seria você fazer assim:

<pessoa> <nome> GUJ </nome> <carros> <carro>GOL </carro> <carro>PALIO</carro> </carros> </pessoa>

Talvez tenha alguma API por ai maluka que não exija essa regra de atributos únicos, mas “a regra é clara” rsrs.

Falows[/quote]

coloquei este ai so de exemplo, mas atributos únicos, ou valores únicos dos atributos:
estou usando o XStream pra ler o xml, e ele dá como valor duplicado nisso:

<carros>
   <carro name="PALIO"/>
   <carro name="GOL"/>
</carros>

ele reclama que o xml está com valor duplicado, mas neste caso o fato de eu ter dois carros não é problema?! ou é?
eu achei que ele considerava diferente PALIO de GOL, mas parece que ele tá analisando carro name, e carro name…

se eu estiver certo, porque ele reclama de igualdade sendo que um está PALIO e outro GOL.
a igualdade é dos atributos e não do valor?

Se vc está utilizando o XStream, post a Classe correspondente e o conteúdo do arquivo xml novamente para verificar os dois tem que estar bem sincronizados.

flw

xml a ser lido reduzido os dados, mas a estrutura é essa:

<empresa>
      <diretor>* FROM DIRETOR;</diretor>
       <setor nome="rh">
            <grupo>
                  <sub atributo="pagamento">
                        <item nome="folha"/>
                        <item nome="despesa"/>
                  </sub>
                  <responsavel atributo="local">
                        <item nome="SP"/>
                        <item nome="RJ"/>
                  </responsavel>
            </grupo>
      </setor>
</empresa>

o que fiz de mapeamento de classes:

classe externa empresa:[code]
//IXML uma interface sem nenhum método
public class empresa implements IXML {
private List setor;
private String diretor;

	 get e set

	public void addSetor(Setor s){
		getSetor().add(s);

}
[/code]
classe setor:[code]

public class Setor implements IXML{
private List grupo;
private String nome;

public void addFiliais(Grupo g){
	getGrupo().add(g);
}	[/code]

classe grupo:

[code]
public class Grupo implements IXML{
private Sub sub;
private Responsavel responsavel;

	public void addSub(Sub s){
	setSub(s);
}	

public void addResponsavel(Responsavel r){
	setResponsavel(r);
}	

}[/code]

agora aqui so faltou a classe item que esta dentro de Sub e Responsável, mas o grande problema é:
dá erro dizendo que não é possivel CONVERTER a classe GRUPO para SETOR…
eu consigo pegar a string DIRETOR e pego o valor, mas no próximo nó da erro.

Vc tá ciente de que tanto na classe Sub quanto na classe Responsavel tem que haver atributos do tipo List para os objetos do tipo Item né?

Outro detalhe tente fechar a tag desta maneira . É a mesma coisa mas não sei se o XStream sabe disso rsrsrs.

Se tudo isso não der certo, tente eliminar o Sub na classe Grupo e testa depois o atributo Responsavel e testa novamente o que passar vai dizer que a classe que vc eliminou é o problema, na classe que está o problema aplique a mesma técnica.

[]'s

[quote=victor.godinho]<pessoa> <nome> GUJ </nome> <carros> <carro>GOL </carro> <carro>PALIO</carro> </carros> </pessoa>[/quote]

É possivel ser assim:

<pessoa> <nome> GUJ </nome> <carros> <carro id="1">GOL </carro> <carro id="2">PALIO</carro> </carros> </pessoa>

[quote=fantomas]Vc tá ciente de que tanto na classe Sub quanto na classe Responsavel tem que haver atributos do tipo List para os objetos do tipo Item né?

Outro detalhe tente fechar a tag desta maneira . É a mesma coisa mas não sei se o XStream sabe disso rsrsrs.

Se tudo isso não der certo, tente eliminar o Sub na classe Grupo e testa depois o atributo Responsavel e testa novamente o que passar vai dizer que a classe que vc eliminou é o problema, na classe que está o problema aplique a mesma técnica.

[]'s
[/quote]

estou ciente, eu tenho uma lista dentro de cada um deles, mas não adianta eu tirar um ou outro, porque o erro não chega a este nó, ele diz um erro que NÃO é possível fazer um CAST de Grupo para Setor, ou seja, ele não chega a entrar no nível a abaixo, não consigo ver o erro de relacionamento entre Grupo e Setor.

Em algum lugar do código vc descreveu os aliás pra estas estruturas, vc já fêz uma revisão nelas? Pode acontecer de vc informar uma classe que não seja compatível com o nó informado.

Tá ficando intrigante este problema ai heim?!?! rsrsrsr