Xstream e um xml bem zuado!

1 resposta
Luiz-SP

Olá pessoal,

Estou querendo fazer o unmarshal do xml abaixo, mas  de algumas tag, estou utilizando xstream, mas vejam que o xml começa com eprints, pelo que eu li até agora eu teria de criar uma classe eprints...cheia de atributos que eu não vou usar, a própria classe eprints não teria nada a ver com minha regra de negócio. Tentei criar um Converter, mas recebi o erro:  XML document structures must start and end within the same entity. Ou seja, ele  chiando que a minha classe não é a mesma do xml, certo? Como contorno isso, alguém tem uma idéia?

PS: Esse xml são eu que gero.

<?xml version="1.0" encoding="UTF-8"?> <eprints xmlns="http://eprints.org/ep2/data/2.0"> <eprint id="http://eprints.rclis.org/id/eprint/19080" xmlns="http://eprints.org/ep2/data/2.0"> <eprintid>19080</eprintid> <rev_number>30</rev_number> <eprint_status>archive</eprint_status> <userid>1433</userid> <dir>disk0/00/01/90/80</dir> <datestamp>2010-09-29 03:33:01</datestamp> <lastmod>2010-09-29 03:33:01</lastmod> <status_changed>2010-09-29 03:33:01</status_changed> <type>book</type> <metadata_visibility>show</metadata_visibility> <item_issues_count>0</item_issues_count> <abstract>This book provides definitions of databases, journals, directories, and indicate the databases for indexing in various areas of knowledge.</abstract> <othersabs> <item> <othabstracts>Este livro apresenta definições de bases de dados, periódicos, diretórios, além de indicar as bases de dados de indexação nas diversas áreas do conhecimento.</othabstracts> <language>pt</language> </item> </othersabs> <altloc> <item>http://cutter.unicamp.br/document/?code=42177</item> </altloc> <creators> <item> <name> <family>Santos</family> <given>Gildenir Carolino</given> </name> <id/> </item> </creators> <editors> <item> <name> <family>Santos</family> <given>Gildenir Carolino</given> <honourific>Dr</honourific> </name> <id/> </item> </editors> <ispublished>pub</ispublished> <keywords>Indexation, Scientific journals - Sources of information / Indexação, Periódicos científicos - Fontes de indexação</keywords> <linguabib> <item>pt</item> </linguabib> <pubdom>FALSE</pubdom> <publisher>UNICAMP / Faculdade de Educação / Biblioteca Prof. Joel Martins</publisher> <refereed>FALSE</refereed> <series>Manuais técnicos BFE; n.5</series> <subjects> <item>LN</item> <item>I.</item> <item>EB</item> <item>IC</item> <item>HA</item> </subjects> <countries> <item>BR-</item> </countries> <title>Fontes de indexação para periódicos científicos: um guia para bibliotecários e editores</title> <date>2010-09-09</date> <full_text_status>public</full_text_status> <documents> <document id="http://eprints.rclis.org/id/document/14571" xmlns="http://eprints.org/ep2/data/2.0"> <docid>14571</docid> <rev_number>3</rev_number> <eprintid>19080</eprintid> <pos>1</pos> <format>application/pdf</format> <formatdesc>Livro: ISBN: 978-85-7713-121-1</formatdesc> <language>pt</language> <security>public</security> <main>Fontesdeindexacao_ISBN9788577131211.pdf</main> <files> <file> <filename>Fontesdeindexacao_ISBN9788577131211.pdf</filename> <filesize>2303625</filesize> <url>http://eprints.rclis.org/19080/1/Fontesdeindexacao_ISBN9788577131211.pdf</url> </file> </files> </document> <document id="http://eprints.rclis.org/id/document/14572" xmlns="http://eprints.org/ep2/data/2.0"> <docid>14572</docid> <rev_number>4</rev_number> <eprintid>19080</eprintid> <pos>2</pos> <format>text/html</format> <formatdesc>Livro: ISBN: 978-85-7713-121-1</formatdesc> <language>pt</language> <security>public</security> <main>index.html?code=42177</main> <files> <file> <filename>index.html?code=42177</filename> <filesize>12779</filesize> <url>http://eprints.rclis.org/19080/2/index.html%3Fcode%3D42177</url> </file> </files> </document> </documents> </eprint>

1 Resposta

E

Pelo que entendi, você não quer todo o XML mas só alguma coisinha dele, não? E esse XML é bem pequeno também. Procure por DOM e XPath, provavelmente é suficiente para o que você quer. Por exemplo, a expressão XPath para pegar só o que está dentro de “datestamp” é “/eprints/eprint/datestamp/*”, se não me engano.

Criado 11 de outubro de 2010
Ultima resposta 11 de out. de 2010
Respostas 1
Participantes 2