2 回答

TA貢獻1812條經驗 獲得超5個贊
這應該有效。您可以使用 JAXB 進行解組。請閱讀有關 JAXB 的信息。還要注意如何使用XmlElement和。XmlAttribute
String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<config>\n" +
" <server serverport=\"9966\"/>\n" +
" <client clientport=\"9999\">\n" +
" <serverHost>localhost</serverHost>\n" +
" </client>\n" +
"</config>";
JAXBContext jaxbContext;
try
{
jaxbContext = JAXBContext.newInstance(Config.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Config config = (Config) jaxbUnmarshaller.unmarshal(new StringReader(xmlString));
System.out.println(config);
}catch (JAXBException e){
e.printStackTrace();
}
配置類將是這樣的
@XmlRootElement(name = "config")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Config {
public Server server;
public Client client;
public Config() {
}
public Server getServer() {
return server;
}
public void setServer(Server server) {
this.server = server;
}
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
}
服務器類
public class Server {
@XmlAttribute(name = "serverport")
public String serverPort;
}
客戶類
public class Client {
@XmlAttribute(name = "clientport")
public String clientPort;
@XmlElement
public String serverHost;
}

TA貢獻1951條經驗 獲得超3個贊
該解決方案pvpkiran解決了一個問題,但我無法忍受 Jackson 無法將 XML 解析為單個對象的事實。調查帶來了理想的效果,最終發現 我的 pom.XML 中有兩個類似的依賴項,如jackson-databind和。jackson-xml-databind原來他們之間有矛盾。注釋掉后jackson-xml-databind一切正常。
現在我的課程看起來像:
客戶端類
@Getter
@NoArgsConstructor
@Setter
public class Client {
@JacksonXmlProperty(localName = "clientport")
private String clientPort;
@JacksonXmlProperty(localName = "serverHost")
private String serverHost;
}
服務器類
@AllArgsConstructor
@Getter
@NoArgsConstructor
@Setter
public class Server {
@JacksonXmlProperty(localName = "serverport")
private String serverPort;
}
配置類
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@ToString
@JacksonXmlRootElement(localName = "config")
public class Config {
private Server server;
private Client client;
}
再次感謝您的承諾。
添加回答
舉報