【发布时间】:2020-01-18 10:44:48
【问题描述】:
我一直在尝试将 xml 字符串转换为 Java 对象。
有一个根标签 TV 。其中有多个字段,但我希望将整个内容作为一个字符串。
@XmlRootElement(name = "TV")
@XmlAccessorType(XmlAccessType.FIELD)
public class TV {
@XmlElement
public String details;
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
@Override
public String toString() {
return "TV [details=" + details + "]";
}
}
public class XMLtoJavaObject {
public static void main(String[] args) {
String xmlString = "<TV version=\"0.91fn\"><channel><title>Friends</title><link>https://www.imdb.com/title/tt0108778/</link><season>2</season></channel></TV>";
JAXBContext jaxbContext;
try {
jaxbContext = JAXBContext.newInstance(TV.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
TV tv = (TV) jaxbUnmarshaller.unmarshal(new StringReader(xmlString));
System.out.println("TV" + tv);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
输出:
TV [details=null]
我没有将整个嵌套的 xml 作为字符串。
有人可以帮我解决我所缺少的吗?
提前致谢
【问题讨论】:
-
我认为问题在于您的
TV类不反映您的XML字符串。那里没有details字段等。尝试使用和类创建Channel channel字段。和带有title字段的Channel 类并检查它是否解析。 -
我不能将整个嵌套的频道标签作为一个字符串吗?
-
在结果字符串中你还需要标签还是只需要值?您能否根据问题中的示例提供预期结果?
标签: java xml jaxb marshalling unmarshalling