Converter String to VO

4 respostas
rogeriosantos77

Srs, tenho um webServive que me retorna uma string com o seguinte valor :

<NewDataSet> <Table> <Book>66</Book> <BookTitle>Revelation</BookTitle> <Chapter>1</Chapter> <Verse>1</Verse> <BibleWords>The Revelation of Jesus Christ, which God gave unto him, to shew unto his servants things which must shortly come to pass; and he sent and signified it by his angel unto his servant John:</BibleWords> </Table> </NewDataSet>

Como eu faço para converter essa string em um Objeto.
Eu tenho no sistema um VO que representa os campos do string abaixo

private int book; private String bookTitle; private int chapter; private int verse; private String bibleWords;

Mas não consigo fazer uma conversão.E possível fazer ? como ?

4 Respostas

H

E ae Rogério…

De uma olhada nos artigos aqui do GUJ:

http://www.guj.com.br/article.show.logic?id=15
http://www.guj.com.br/article.show.logic?id=19
http://www.guj.com.br/article.show.logic?id=22
http://www.guj.com.br/article.show.logic?id=144

São todos artigos para manipulação de xml…

Qualquer coisa estamos ae…

Valeu!

rogeriosantos77

Po gente tentei usar o xtream mas não to conseguindo.

Implementei o codigo abaixo :
net.webservicex.BibleWebserviceClient cli = new BibleWebserviceClient();
		String  retornoWS =  cli.getBibleWebserviceSoap().getBibleWordsByChapterAndVerse("revelation", 1, 1);
		XStream xstream = new XStream(new DomDriver());		
		
		Bean bena = (Bean) xstream.fromXML(retornoWS);

Porém ta dando uma exeption que eu não to entendendo.
A exception é :
[color=red]
Exception in thread "main" com.thoughtworks.xstream.mapper.CannotResolveClassException: NewDataSet : NewDataSet
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:96)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:52)
at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:136)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:845)
at teste.main(teste.java:23)
[/color]

rafaelvalerini

Seguinte…

O seu problema está no mapeamento do xml para o Bean, ou seja, o seu stackTrace diz que não está reconhecendo o atributo NewDataSet, pois no VO que vc criou naum tem o nome de NewDataSet, o correto seria:

Classe NewDataSet

public class NewDataSet {

	private Table Table;

	public Table getTable() {
		return Table;
	}

	public void setTable(Table table) {
		Table = table;
	}
	
}

Classe Table

public class Table {

	private Integer Book;
	private String BookTitle;
	private Integer Chapter;
	private Integer Verse;
	private String BibleWords;
	
	public Integer getBook() {
		return Book;
	}
	public void setBook(Integer book) {
		Book = book;
	}
	public String getBookTitle() {
		return BookTitle;
	}
	public void setBookTitle(String bookTitle) {
		BookTitle = bookTitle;
	}
	public Integer getChapter() {
		return Chapter;
	}
	public void setChapter(Integer chapter) {
		Chapter = chapter;
	}
	public Integer getVerse() {
		return Verse;
	}
	public void setVerse(Integer verse) {
		Verse = verse;
	}
	public String getBibleWords() {
		return BibleWords;
	}
	public void setBibleWords(String bibleWords) {
		BibleWords = bibleWords;
	}
}

agora o método main fazendo a conversão da String em Bean

public static void main(String[] args) {
		String xml = "<NewDataSet> "+  
					  "<Table>"+   
					    "<Book>66</Book>"+   
					    "<BookTitle>Revelation</BookTitle>"+   
					    "<Chapter>1</Chapter>"+   
					    "<Verse>1</Verse>"+   
					    "<BibleWords>" +
			    			"The Revelation of Jesus Christ, which God gave unto him, " +
			    			"to shew unto his servants things which must shortly come to pass; " +
			    			"and he sent and signified it by his angel unto his servant John:" +
					    "</BibleWords>"+   
					  "</Table>"+   
					"</NewDataSet>";
		
		XStream xstream = new XStream();
		@SuppressWarnings("unused")
		NewDataSet newDataSet = (NewDataSet) xstream.fromXML(xml);
		System.out.println("Funcionou");
	}

Você deve manter os nomes das tags nos seus atributos, ou utilizar o método alias(String, String) para dar nomes aos seus atributos nos beans. Esse método está no seu objeto xstream

rissato

já fiz isso com JAXB e achei bem fácil.

Criado 24 de abril de 2009
Ultima resposta 24 de abr. de 2009
Respostas 4
Participantes 4