我正在尝试从xml文件转换为java,对此我没有经验。所以有人可以帮我吗。这是我下面的课。
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement(name= "book")
public class book {
private String ID;
private String title;
private String author;
private String genre;
private String price;
private String publicationDate;
private String discription;
public book(String a, String b, String c, String d, String e, String f, String g ){
ID = a;
title = b;
author = c;
genre = d;
price = e;
publicationDate = f;
discription = g;
}
@XmlElement
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
@XmlElement
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@XmlElement
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@XmlElement
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
@XmlElement
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
@XmlElement
public String getPublicationDate() {
return publicationDate;
}
public void setPublicationDate(String publicationDate) {
this.publicationDate = publicationDate;
}
@XmlElement
public String getDiscription() {
return discription;
}
public void setDiscription(String discription) {
this.discription = discription;
}
}
现在我想将xml文件转换为java对象,我将在下面附加xml文件。
<?xml version="1.0"?>
<catalog>
<book id="1">
<author>Isaac Asimov</author>
<title>Foundation</title>
<genre>Science Ficition</genre>
<price>164</price>
<publish_date>1951-08-21</publish_date>
<description>Excellent.</description>
</book>
<book id="2">
<author>Isaac Asimov</author>
<title>Foundation and Empire</title>
<genre>Science Fiction</genre>
<price>79</price>
<publish_date>1952-10-12</publish_date>
<description>Good.</description>
</book>
</catalog>
到目前为止,我尝试通过在我的man类中创建以下方法来转换和读取xml文件
enter code here
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class Demo {
public static void unma() throws JAXBException {
JAXBContext jc = JAXBContext.newInstance(book.class);
Unmarshaller um = jc.createUnmarshaller();
book b = (book) um.unmarshal(new File("src/Dv600/books.xml"));
System.out.println("information");
System.out.println("id" + b.getID());
System.out.println("Author" + b.getAuthor());
System.out.println("description" + b.getDiscription());
}
public static void main(String[] args) throws JAXBException {
unma();
}
}
您的代码有几个问题。
@XMLAttribute
是正确的id注释,因为您的xml ID是book的属性,而不是作者或描述的元素。@XMLElement
应该在setter方法上,而不是在getter方法上************** TEST.java ************导入java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class Test {
public static void unma() throws JAXBException {
JAXBContext jc = JAXBContext.newInstance(Books.class);
Unmarshaller um = jc.createUnmarshaller();
Books b = (Books) um.unmarshal(new File("c:/tester/books.xml"));
for (int i =0;i<b.getBooks().size();i++) {
Book bb = b.getBooks().get(i);
System.out.println(bb.getAuthor());
System.out.println(bb.getTitle());
System.out.println(bb.getDescription());
System.out.println(bb.getGenre());
System.out.println(bb.getPrice());
System.out.println(bb.getDate());
}
}
public static void main(String[] args) throws JAXBException {
unma();
}
}
********** Books.java **********
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement(name="Books")
public class Books {
List<Book> books;
public List<Book> getBooks() {
return books;
}
@XmlElement( name = "Book" )
public void setBooks( List<Book> books )
{
this.books = books;
}
}
************* Book.java ********
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlType( propOrder = { "author", "description","title", "genre","price", "date"} )
@XmlRootElement( name = "Book" )
public class Book
{
String author;
String description;
String title;
String genre;
String price;
String date;
public String getAuthor() {
return author;
}
@XmlElement( name = "author" )
public void setAuthor( String author )
{
this.author = author;
}
public String getDescription() {
return description;
}
@XmlElement( name = "description" )
public void setDescription( String description )
{
this.description = description;
}
public String getTitle() {
return title;
}
@XmlElement( name = "title" )
public void setTitle( String title )
{
this.title = title;
}
public String getGenre() {
return genre;
}
@XmlElement( name = "genre" )
public void setGenre( String genre )
{
this.genre = genre;
}
public String getPrice() {
return price;
}
@XmlElement( name = "price" )
public void setPrice( String price )
{
this.price = price;
}
public String getDate() {
return date;
}
@XmlElement( name = "date" )
public void setDate( String date )
{
this.date = date;
}
}
**本书的XML ****
<?xml version="1.0"?>
<Books>
<Book id="1">
<author>Isaac Asimov</author>
<title>Foundation</title>
<genre>Science Ficition</genre>
<price>164</price>
<date>1951-08-21</date>
<description>Excellent.</description>
</Book>
<Book id="2">
<author>Isaac Asimov</author>
<title>Foundation and Empire</title>
<genre>Science Fiction</genre>
<price>79</price>
<date>1952-10-12</date>
<description>Good.</description>
</Book>
</Books>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句