如何将 xml 转换为 java
How to convert xml to java
我正在尝试将 xml 文件转换为 java,我没有这方面的经验。所以有人可以帮助我吗?
下面是我的书 class。
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 class
中创建下面的方法来转换和读取 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();
}
}
您的代码有几个问题。
根据您的 xml ID,@XMLAttribute
是 id 的正确注释
是书的一个属性,而不是作为作者或描述的元素。
@XMLElement
应该在 setter 方法上而不是在 getter 方法上
- 不确定为什么 book.java 中有构造函数,也请将其删除。
- 什么是Catalog,不用那个。我附上了工作代码,如果您有任何问题,请告诉我。
************** 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>
我正在尝试将 xml 文件转换为 java,我没有这方面的经验。所以有人可以帮助我吗? 下面是我的书 class。
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 class
中创建下面的方法来转换和读取 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();
}
}
您的代码有几个问题。
-
根据您的 xml ID,
@XMLAttribute
是 id 的正确注释 是书的一个属性,而不是作为作者或描述的元素。@XMLElement
应该在 setter 方法上而不是在 getter 方法上- 不确定为什么 book.java 中有构造函数,也请将其删除。
- 什么是Catalog,不用那个。我附上了工作代码,如果您有任何问题,请告诉我。
************** 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>