我被困住了。如何解析具有同名子节点的Node? 在此示例中,我需要具有速率属性的节点。
<xml>
<Rates>
<Rates winrate_cap="9999">
<Rates rate="323"/>
<Rates rate="343"/>
<Rates rate="2338"/>
<Rates rate="233"/>
</Rates>
</Rates>
</xml>
我的响应包装类:
@Root(name = "xml", strict = false)
public class XMLResponse {
@ElementList(entry = "Rates")
public List<Rates> response;
public static class Rates {
@Attribute(name = "winrate_cap", required = false)
public String winrate_cup;
@ElementList(required = false, entry = "Rates")
public List<Rates> rates;
}
public static class Rates {
@Attribute(name = "rate", required = false)
public String rate;
}
}
最佳答案
你走在正确的道路上。由于这里有很多费率,最好使用更多上下文为类命名,并通过注释设置 xml 名称。
我已经将 XMLResponse
分开了和Rates
类,但这没有任何区别。
类(class)XMLRespone
映射<xml>...</xml>
部分:
@Root(name = "xml")
public class XMLRespone
{
@Element(name = "Rates")
private Rates rates;
// ...
}
<Rates...>...</Rates>
的所有类型由 Rates
完成类(及其映射结构的内部类:
@Root(name = "Rates")
public class Rates
{
@Element(name = "Rates")
private RateList rates;
// ...
public static class RateList
{
@ElementList(entry = "Rates", inline = true)
private ArrayList<RateValue> values;
@Attribute(name = "winrate_cap", required = true)
private int winrateCap;
// ...
}
public static class RateValue
{
@Attribute(name = "rate", required = true)
private int rate;
// ...
}
}
反序列化 XML 会得到以下输出(使用生成的 toString()
):
XMLRespone{rates=Rates{rates=RateList{values=[RateValue{rate=323}, RateValue{rate=343}, RateValue{rate=2338}, RateValue{rate=233}], winrateCap=9999}}}
关于java - SimpleXMLConverter 解析 xml 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225097/