xstream.fromXMLreturns一个Class
xstream.fromXML returns a Class
使用 XStream 1.2.2
XML 文档:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" protocol="OCI" xmlns="C">
<sessionId xmlns="">192.168.1.19,299365097130,1517884537</sessionId>
<command xsi:type="AuthenticationRequest" xmlns="">
<userId>me@somewhere.com</userId>
</command>
</Document>
我正在尝试解析为 Document
;
public class Document {
private String sessionId;
public Command command;
public Command getCommand() {
return this.command;
}
public void setCommand(Command command) {
this.command = command;
}
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
}
解析代码为:
XStream xstream = new XStream();
xstream.alias("Document", Document.class);
xstream.alias("sessionId", String.class);
xstream.alias("command", Command.class);
xstream.alias("userId", String.class);
Document doc = (Document) xstream.fromXML(theInput, Document.class);
但这抛出:
java.lang.ClassCastException: java.lang.Class cannot be cast to com.mycompany.ocip.server.model.Document
因为来自 fromXml
的 returned 对象的类型是:Class<com.mycompany.ocip.server.model.Document>
我不应该期望它 return 一个 com.mycompany.ocip.server.model.Document
实例吗?
需要:
Document doc = (Document) xstream.fromXML(theInput);
如果您传入第二个参数,XStream 将尝试使用 XML 中的值填充该参数。因为在你的代码中,你传递了一个 class 对象,XStream 将尝试填充 class 对象和 return 它。
JavaDoc有详细内容
使用 XStream 1.2.2
XML 文档:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" protocol="OCI" xmlns="C">
<sessionId xmlns="">192.168.1.19,299365097130,1517884537</sessionId>
<command xsi:type="AuthenticationRequest" xmlns="">
<userId>me@somewhere.com</userId>
</command>
</Document>
我正在尝试解析为 Document
;
public class Document {
private String sessionId;
public Command command;
public Command getCommand() {
return this.command;
}
public void setCommand(Command command) {
this.command = command;
}
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
}
解析代码为:
XStream xstream = new XStream();
xstream.alias("Document", Document.class);
xstream.alias("sessionId", String.class);
xstream.alias("command", Command.class);
xstream.alias("userId", String.class);
Document doc = (Document) xstream.fromXML(theInput, Document.class);
但这抛出:
java.lang.ClassCastException: java.lang.Class cannot be cast to com.mycompany.ocip.server.model.Document
因为来自 fromXml
的 returned 对象的类型是:Class<com.mycompany.ocip.server.model.Document>
我不应该期望它 return 一个 com.mycompany.ocip.server.model.Document
实例吗?
需要:
Document doc = (Document) xstream.fromXML(theInput);
如果您传入第二个参数,XStream 将尝试使用 XML 中的值填充该参数。因为在你的代码中,你传递了一个 class 对象,XStream 将尝试填充 class 对象和 return 它。
JavaDoc有详细内容