【问题标题】:Storing XML Tag content to different variable using JAXB使用 JAXB 将 XML 标记内容存储到不同的变量
【发布时间】:2018-05-08 10:14:20
【问题描述】:

我目前在我的项目中遇到一个问题,它涉及存储在字符串变量中的 XML。我正在尝试将 XML 的内容保存在不同的变量中。

使用包含相同变量名和标签名的通用 JAXB 方法应该可以解决我的问题。在这种情况下,我必须存储不同的变量名。

这是我的 XML

<?xml version="1.0" encoding="UTF-8"?>
<PORTAL>
    <NAME>PERSON 2.0</NAME>
    <ID>99995</ID>
    <DATAGENERATIO>2008-04-10</DATAGENERATIO>
    <HOURGENERATIO>05:07:35</HOURGENERATIO>
    <LANGUAGE>EN</LANGUAGE>
    <XMLVERSIO>1.0</XMLVERSIO>
</PORTAL>

这是用于存储该 XML 内容的类。

@XmlRootElement(name="PORTAL")
public class ApiPubPortal {

    private long idPortal;
    private String idIdioma;
    private String nombre;
    private Date dataGeneracio;
    private String versionXml;
}

我已经尝试使用@XmlElement(name="ID"),但它给了我IllegalAnnotationExceptions

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: java xml spring jaxb unmarshalling


    【解决方案1】:

    您需要确保所有私有字段都有 getter 和 setter。下面给出一个例子:

    private long idPortal;
    
    @XmlElement(name = "ID")
    public long getIdPortal()
    {
     return idPortal;
    }
    public void setIdPortal(long idPortal)
    {
     this.idPortal = idPortal;
    }
    

    请注意将@XmlElement(name = "ID") 放在您的getter 上。

    【讨论】:

    • 就是这样,我一直把@XmlElement(name="ID") 放在变量中,非常感谢。
    • 欢迎您,请您也为答案投票。谢谢:)
    • نائس سولیوشن نائل
    【解决方案2】:

    使用 SimpleXml,您可以使用 @XmlName 注释告诉解析器链接到字段的 XML 标记名称是什么。 POJO 中不需要 getter 和 setter。这将起作用:

    @XmlName("PORTAL")
    public class ApiPubPortal {
        @XmlName("ID")
        private long idPortal;
        private String idIdioma; // Its not clear to which XML tag this maps
        @XmlName("NAME")
        private String nombre;
        @XmlName("DATAGENERATIO")
        private String dataGeneracio;
        @XmlName("XMLVERSIO")
        private String versionXml;
    }
    

    然后您的 XML 可以这样序列化:

    final String xml = ...
    final SimpleXml simple = new SimpleXml();
    final ApiPubPortal portal = simple.fromXml(xml, ApiPubPortal.class);
    

    该库位于 Maven 中心:

    <dependency>
        <groupId>com.github.codemonstur</groupId>
        <artifactId>simplexml</artifactId>
        <version>1.4.0</version>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 2014-05-23
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 2016-10-15
      相关资源
      最近更新 更多