java - JAXB:如何将元素与命名空间绑定(bind)

标签 java xml jaxb

他是我在远程机器上托管的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<store xmlns="http://mydomain.com/store/schemas">
    <!-- My Book store-->
    <book location="vk 1">
        <title>Learning JAXB</title>
        <author>Joe Blogg</author>
    </book>
    <book location="vk 1">
        <title>Learning JAXB SE</title>
        <author>Joe Blogg</author>
    </book>
</store>

我有如下装订书:

书籍装订:

@XmlRootElement(name = "book")
@XmlType(propOrder = { "title", "author"})
public class Book
{
 private String title;
 private String author;
 private String location;

 @XmlElement(name = "title")
 public String getTitle()
 {
  return title;
 }

 public void setTitle(String title)
 {
  this.title=title;
 }

 @XmlAttribute(name = "location")
 public String getLocation()
 {
  return location;
 }

 public void setLocation(String location)
 {
  this.location = location;
 }

 @XmlElement(name = "author")
 public String getAuthor()
 {
  return author;
 }

 public void setAuthor(String author)
 {
  this.author = author;
 }
}

商店绑定(bind):

@XmlRootElement(name = "store", namespace = "http://mydomain.com/store/schemas")
public class Store
{
 private List<Book> books;

  @XmlElement(name="book")
  public List<Book> getBooks()
  {
    return books;
  }

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

我正在将 XML 文件解码为 fAollows:

  JAXBContext context = JAXBContext.newInstance(Store.class);
  Unmarshaller unmarshaller = context.createUnmarshaller();
  URL url = new URL("http://mydomain/files/store.xml");
  Store s= (Store) unmarshaller.unmarshal(url);
  System.out.println(s.getBooks());// Prints null

当我调用 getBooks() 时,我们得到空值。谁能发现我在这里做错了什么?!

最佳答案

answer provided by skaffman是不正确的。您可以通过 @XmlSchema 在包级别指定 namespace ,或使用 @XmlType 在类级别指定 namespace ,并使用它来限定字段/属性:

了解更多信息

关于java - JAXB:如何将元素与命名空间绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8038821/

相关文章:

c# - C#中使用XML文件存储数据

ruby-on-rails - Ruby on Rails - 如何呈现为具有 has_many 关联的 xml 模型

java - JAXB Java 生成 XML,为什么小写?

java - 关于创建 JAXB 上下文的 JAXBException

java - 无法确定按钮是否被 native android 自动化/Java 禁用

java - 在同一 bean 上使用 EJB 和 JAXWS 时 weblogic 12cR2 烦人的日志

java - HttpSession setAttribute 并不总是插入新对象

xml - 如何在 cq 对话框中动态使用下拉元素更改选项?

java - JAXB 和同步

Java ScheduledExecutorService 幕后工作