我正在使用JAXB来解封xml文件。这是我的元素特性代码,但是我想在元素特性中有一个特殊的元素顺序,像这样
<feature>
<name>2D Polynomial Approximation of Log of ConstantQ</name>
<active>false</active>
<attribute>50</attribute>
<attribute>20</attribute>
<attribute>10</attribute>
<attribute>10</attribute>
</feature>
我检查了一些@XmlType教程(propOrder = {}),但我找不到一种方法来订购元素列表,如这里的属性元素。
这是我的代码。
@XmlRootElement(name = "feature")
@XmlType(propOrder = {"name", "active","attribute"})
public class Feature{
String name;
boolean active;
List<String> attributes = new LinkedList<String>();
/**
* name element of feature element
* @return
*/
@XmlElement(name = "name")
public final String getName(){
return this.name;
}
public final void setName(String name){
this.name = name;
}
/**
* active element
* @return
*/
@XmlElement(name = "active")
public final boolean getActive(){
return this.active;
}
public final void setActive(boolean active){
this.active = active;
}
/**
* attribute elements
* @return
*/
@XmlElement(name = "attribute")
public final List<String> getAttributes(){
return this.attributes;
}
public final void setAttributes(List<String> attributes){
this.attributes = attributes;
}
}
它总是抛出异常,因为我在propOrder中只定义了一个属性。但是由于属性是多重的,可能是一个或多个,我不知道如何实现它。或者你知道其他排序元素的方法吗
提前感谢您的帮助
propOrder
基于字段/属性名称,而不是XML元素名称。所以你应该
@XmlType(propOrder = {"name", "active","attributes"})
有关更多信息
我得到以下错误: 我尝试了以下几种方式,
现在我想从中得到一个,它包含。 我已经试过了(并期望能奏效): 但这与任何内容都不匹配(包含null)。 (我不想更改XML语法。)
我有以下JAXB对象: 我使用JAXB编组程序将对象转换为XML: 它运行平稳,没有任何异常,但是,结果总是缺少元素键。我试图将其改为Attribute,但它也不起作用。以下是输出示例: 我曾尝试将键更改为另一个名称,例如AuthKey,但它仍然缺失。我做错了什么? 编辑我发现了问题,这是因为我的键的值是空的。如果它包含值,则将其写入XML。然而,您能解释一下为什么在XMLElement中,我写了
我是8Java的新手。我有一个A类对象的列表,其中A的结构如下: 现在我有了一个类A的元素L的列表,在这个列表中,我想用inactive=false更新一个名为name="test "的元素。 我可以通过编写for循环并创建一个新列表来非常轻松地做到这一点。 但是我如何使用Java8流API呢?
问题内容: 我有以下XML: 我有以下Java类将其映射到: 当我尝试与解组 我得到这个错误 我需要参数同时具有’attr’属性和内容,所以我在做什么错呢? 问题答案: 默认情况下, JAXB(JSR-222) 实现将公共属性(获取/设置方法)和带注释的字段视为已映射(和分开)。默认映射是这样,因此您的属性将被视为以此方式映射。 解决方案1 由于您要注释字段,因此需要在类中添加。 解决方案#2 注
null 编辑:一个附加的非功能性需求是,测试应该可以很容易地通过附加的约束来扩展。在Hamcrest中,表达附加约束是相当容易的,例如。 依赖于列表索引的测试必须重新编号。在本例中,使用自定义条件的测试必须重写完整的条件(请注意,中的约束不限于子字符串检查)。