复杂 XML 的序列化反序列化,XML 层级太多,无法反序列化

发布于 2021-11-27 15:23:38 字数 2364 浏览 934 评论 5

<?xml version="1.0" encoding="utf-8" ?>
<config>
  <rules>
    <rule name="namea">
      <params>
        <item name="p" type="get" pattern="(ios|android|)" />
        <item name="cid" type="get" pattern="(ios|android|)" />
        <item name="type" type="get" pattern="(ios|android|)" />
        <item name="sort" type="get" pattern="(ios|android|)" />
        <item name="action" type="post" pattern="(ios|android|)" />
        <item name="userAgent" type="header" pattern="(ios|android|)" />
      </params>
    </rule>

    <rule name="nameb">
      <params>
        <item name="p" type="get" pattern="(ios|android|)" />
        <item name="cid" type="get" pattern="(ios|android|)" />
        <item name="type" type="get" pattern="(ios|android|)" />
        <item name="sort" type="get" pattern="(ios|android|)" />
        <item name="action" type="post" pattern="(ios|android|)" />
        <item name="userAgent" type="header" pattern="(ios|android|)" />
      </params>
    </rule>

    <rule name="namec">
      <params>
        <item name="p" type="get" pattern="(ios|android|)" />
        <item name="cid" type="get" pattern="(ios|android|)" />
        <item name="type" type="get" pattern="(ios|android|)" />
        <item name="sort" type="get" pattern="(ios|android|)" />
        <item name="action" type="post" pattern="(ios|android|)" />
        <item name="userAgent" type="header" pattern="(ios|android|)" />
      </params>
    </rule>

    <rule name="named">
      <params>
        <item name="p" type="get" pattern="(ios|android|)" />
        <item name="cid" type="get" pattern="(ios|android|)" />
        <item name="type" type="get" pattern="(ios|android|)" />
        <item name="sort" type="get" pattern="(ios|android|)" />
        <item name="action" type="post" pattern="(ios|android|)" />
        <item name="userAgent" type="header" pattern="(ios|android|)" />
      </params>
    </rule>
  </rules>
</config>


问下,如何反序列化 参数 /config/rules/rule/params/item  ?


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

惜醉颜 2021-11-28 03:47:12

你试一下

眼泪淡了忧伤 2021-11-28 03:44:00
package org.model;


import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "param")
@XmlAccessorType(XmlAccessType.NONE)
public class Param {

    @XmlAttribute(name = "name")
    private String name;

    @XmlAttribute(name = "type")
    private String type;

    @XmlAttribute(name = "pattern")
    private String pattern;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getPattern() {
        return pattern;
    }

    public void setPattern(String pattern) {
        this.pattern = pattern;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Param{");
        sb.append("name='").append(name).append(''');
        sb.append(", type='").append(type).append(''');
        sb.append(", pattern='").append(pattern).append(''');
        sb.append('}');
        return sb.toString();
    }
}

柳若烟 2021-11-28 01:35:29
package org.model;

import javax.xml.bind.annotation.*;
import java.util.List;

@XmlRootElement(name = "rule")
@XmlAccessorType(XmlAccessType.NONE)
public class Rule {
    @XmlAttribute(name = "name")
    private String name;

    @XmlElementWrapper(name = "params")
    @XmlElement(name = "item")
    private List<Param> params;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Param> getParams() {
        return params;
    }

    public void setParams(List<Param> params) {
        this.params = params;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Rule{");
        sb.append("name='").append(name).append(''');
        sb.append(", params=").append(params);
        sb.append('}');
        return sb.toString();
    }
}

酷到爆炸 2021-11-27 23:48:09
package org.model;


import javax.xml.bind.annotation.*;
import java.util.List;

@XmlRootElement(name = "config")
@XmlAccessorType(XmlAccessType.NONE)
public class Config {

    @XmlElementWrapper(name = "rules")
    @XmlElement(name = "rule")
    private List<Rule> rules;

    public List<Rule> getRules() {
        return rules;
    }

    public void setRules(List<Rule> rules) {
        this.rules = rules;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Config{");
        sb.append("rules=").append(rules);
        sb.append('}');
        return sb.toString();
    }
}

输什么也不输骨气 2021-11-27 23:21:52

我就是这样做的,但是始终无法 反序列化出 Param 我以为是层级太多导致的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文