【发布时间】:2019-11-27 09:37:22
【问题描述】:
我有一个具有以下结构的 xml 架构:
<?xml version="1.0" encoding="UTF-8"?>
<page>
<body>
<item attr1="a1" attr2="a2" />
<item attr1="a1" attr2="a2" attr3="a3" attr4="a4" attr_n="a_n" />
<item attr1="a1" attr2="a2" attr3="a3" attr4="a4" attr_n="a_n">
<element1>abc</element1>
<element2>xyz</element2>
<element_n>nnn</element_n>
</item>
</body>
</page>
item标签可以有n个已知或未知的属性和元素。它也可能有也可能没有任何元素。
我想将此 xml 解析为 java pojo,我更喜欢将 hashmap 用于字段item。它解析其余的东西,但 item 的元素/属性没有被解析。它始终为空。任何有关如何实现这一目标的建议将不胜感激。
我的pojo结构是这样的:
Page.java
public class Page
{
private Body body;
public Body getBody ()
{
return body;
}
public void setBody (Body body)
{
this.body = body;
}
@Override
public String toString()
{
return "ClassPojo [body = "+body+"]";
}
}
Body.java
public class Body
{
private List<Map<String, Object>> item;
public List<Map<String, Object>> getItem ()
{
return item;
}
public void setItem (List<Map<String, Object>> item)
{
this.item = item;
}
@Override
public String toString()
{
return "ClassPojo [item = "+item+"]";
}
}
【问题讨论】:
-
我会使用 JAXB 执行此操作,并在
Item中使用@XmlAnyAttribute将属性映射到java.util.Map。 -
它适用于
java.util.Map。但我的是List<Map<String, Object>>,它不起作用 -
您可以使用
List<Item>并在Item中添加您的Map。这几乎是一样的。 -
那会改变我的 xml 结构
-
不,不会。但是,您的 Java 类不会像您想要的那样完全,这是正确的。但在我看来,这是一个很低的价格。
标签: java xml spring-boot xml-parsing