gpt4 book ai didi

java - JAXB 解码问题

转载 作者:行者123 更新时间:2023-11-29 05:27:21 24 4
gpt4 key购买 nike

我正在尝试解码 XML 文件。但是,我最终得到:

unexpected element (uri:"", local:"show-list"). Expected elements are <{}showList>

我的代码:

显示:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "title", "description", "host", "logo", "feed" })
public class Show {
private String title;
private String description;
private String host;
private String logo;
private String feed;
// getter, setter

}

显示列表:

@XmlRootElement
public class ShowList {

@XmlElementWrapper(name = "shows")
@XmlElement(name = "show")
private ArrayList<Show> shows;

public ArrayList<Show> getList() {
return shows;
}

public void setList(ArrayList<Show> shows) {
this.shows = shows;
}

}

XML:

<?xml version="1.0" encoding="utf-8"?>
<show-list count="23">
<show>
<title>TQA Weekly</title>
<description>
<![CDATA[
Technology Show, dedicated to those who wish to learn about new electronics that they have bought, or will buy soon.
We will explaining in each episode new ways of doing things like protecting your identity online, file backup and storage, encryption, using email wisely, and each show we will be giving you new tools to do so.
You may visit our web-site for show notes, lists of software, links to sites, other suggested web-sites, or to send e-mails to Steve Smith with questions, comments or concerns.
]]>
</description>
<host>Steve Smith</host>
<logo>http://images.tqaweekly.com/tqa-weekly-logo.png</logo>
<feed>http://feeds.podtrac.com/tTKj5t05olM$</feed>
</show>
...
</show-list>

主要()

public static void main(String[] args) {
JAXBContext context;
try {
context = JAXBContext.newInstance(ShowList.class);
Unmarshaller um = context.createUnmarshaller();
ShowList list = (ShowList) um.unmarshal(new File("D:/Program Files/apache-tomcat-7.0.35-windows-x86/apache-tomcat-7.0.35/webapps/xml/show.xml"));
System.out.println(list.getList().size());
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

我哪里做错了?

最佳答案

设置@XmlRootElement name 属性的值

@XmlRootElement(name = "show-list")

否则 JAXB 使用类的名称。

另外,去掉

@XmlElementWrapper(name = "shows")

如果您的 XML 是这样的话,那会起作用

<show-list count="23">
<shows>
<show>
<title>TQA Weekly</title>
<description>
<![CDATA[
Technology Show, dedicated to those who wish to learn about new electronics that they have bought, or will buy soon.
We will explaining in each episode new ways of doing things like protecting your identity online, file backup and storage, encryption, using email wisely, and each show we will be giving you new tools to do so.
You may visit our web-site for show notes, lists of software, links to sites, other suggested web-sites, or to send e-mails to Steve Smith with questions, comments or concerns.
]]>
</description>
<host>Steve Smith</host>
<logo>http://images.tqaweekly.com/tqa-weekly-logo.png</logo>
<feed>http://feeds.podtrac.com/tTKj5t05olM$</feed>
</show>
</shows>
</show-list>

关于java - JAXB 解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22234687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com