XMLDecoder >> java.lang.IllegalArgumentException:不支持的元素

问题描述 投票:1回答:1

得到了这个错误

java.lang.IllegalArgumentException:不支持的元素:net

从这个示例xml文件

<?xml version="1.0" encoding="UTF-8"?>
    <net>
       <node label="A">
        ...
       </node>
       <node label="B">
        ...
       </node>
       <node label="C">
        ...
       </node>
    </net>

用这些java代码行

    ...
    FileInputStream file = new FileInputStream("example.xml");
    XMLDecoder decoder = new XMLDecoder(file);
    Object decodedResistors = (Object) decoder.readObject();
    file.close();
    ...
java xml deserialization xml-deserialization illegalargumentexception
1个回答
1
投票

不要使用java.beans.XMLDecoder反序列化自定义XML有效负载。它不是为此而设计的。阅读文章Long Term Persistence of JavaBeans Components: XML Schema。它包含一些示例XML有效载荷,可以通过XMLDecoder反序列化:

<?xml version="1.0" encoding="UTF-8" ?>
<java version="1.4.0" class="java.beans.XMLDecoder">
    <void id="myController" property="owner"/>
    <object class="javax.swing.JButton">
        <void method="addActionListener">
            <object class="java.beans.EventHandler" method="create">
                <class>java.awt.event.ActionListener</class>
                <object idref="myController"/>
                <string>doIt</string>
            </object>
        </void>
    </object>
</java>

如果你需要反序列化自定义qazxsw poi使用qazxsw poi或qazxsw poi。您需要使用XML注释创建JAXB模型:

Jackson XML

用法示例:

POJO

打印:

JAXB

也可以看看:

  • @XmlRootElement(name = "net") @XmlAccessorType(XmlAccessType.FIELD) class Net { @XmlElement(name = "node") private List<Node> nodes; // getters, setters, toString } @XmlAccessorType(XmlAccessType.FIELD) class Node { @XmlAttribute private String label; // getters, setters, toString }
© www.soinside.com 2019 - 2024. All rights reserved.