2017-01-04 14 views
0

У меня есть XML, который выглядит, как показано нижеНужна помощь по JAXB

<Book> 
    <Name>Book1</Name> 
    <Cost>20$</Cost> 
</Book> 

Я использовал Bean класс со свойствами имени, стоимостью и успешно unmarshaled содержимого файла XML БРОНИРОВАНИЙ объекта компонента.

Теперь я хочу иметь несколько объектов книги в том же файле XML, как показано ниже.

<Books> 
    <Book> 
    ... 
    </Book> 
    <Book> 
    ... 
    </Book> 

Я знаю, что я могу создать еще один класс с именем Books.java и имею ArrayList книги объектов с аннотацией @XmlElement тега и маршализацией его.

Но я не хочу тратить еще один общественный класс на это. Может ли кто-нибудь сообщить мне, есть ли другой способ разбора этого XML-файла с помощью JaxB.

Заранее спасибо.

+0

хорошо в идеале это должен быть другой класс книги, я не могу думать иначе, чем что но если ваша забота является дополнительным общественным классом, возможно, вы можете иметь класс книг и книги Book, который может быть внутренним классом. –

+0

Yup. Я могу это сделать, но проблема в том, что если я использую Inner Class, то я не могу получить доступ к методам класса Bean в других классах. Я должен написать некоторые методы и воспользоваться помощью класса Books.java. – Sandeep

+0

Ну, вы можете иметь открытый статический класс Book внутри класса Books, таким образом он будет доступен и снаружи. –

ответ

0

Найдено решение ..

я могу иметь класс, как показано ниже. Я могу использовать список List; переменный член в том же классе Book.java вместо использования еще одного открытого класса Books.java.

@XmlRootElement(name = "Books") 

@XmlAccessorType (XmlAccessType.FIELD) общественного класса BookBean {

private String name; 
private String cost; 

@XmlElement(name = "Books") 
public List<BookBean> books; 

public BookBean(){ 

} 

public BookBean(String s1, String s2){ 
    name=s1; 
    cost=s2; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getCost() { 
    return cost; 
} 

public void setCost(String cost) { 
    this.cost = cost; 
} 

public List<BookBean> getBooks() { 
    return books; 
} 

public void setBooks(List<BookBean> books) { 
    this.books = books; 
} 

}