java - SimpleXMLConverter 解析 xml 节点

标签 java xml simple-framework

我被困住了。如何解析具有同名子节点的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/

相关文章:

Java/Gradle 读取外部配置文件

java - 如何在Java中将一个模拟对象注入(inject)另一个模拟对象的模拟中?

Java Swing并发显示JTextArea

c# - 将 XML 反序列化为带有列表的对象

xml - 将 fop 表向右移动

java - 简单的 : Element 'id' is already used

java - 在 servlet 中使用 httpclient 4.1 作为代理

android - 将两个并排的 ImageView 居中

java - 如何将 jaxb 注释移植到 simpleXml 库?

android - 如何在 Retrofit2 converter-simplexml 中调试 "java.lang.IllegalArgumentException: Unable to create converter for java.util.List"?