gpt4 book ai didi

java - xstream 中的映射属性

转载 作者:数据小太阳 更新时间:2023-10-29 02:12:29 27 4
gpt4 key购买 nike

我有这样的 XML:

<qualification name="access">
<attribute name="abc">OK</attribute>
<attribute name="res">OK 2</attribute>
<requesturi>http://stackoverflow.com</requesturi>
</qualification>

类是:

public class Qualification {
@XStreamAsAttribute
private String name;

private String requesturi;
}

如何映射 <attribute name="abc">OK</attribute>

最佳答案

编写属性转换器后。问题解决了。

package com.xstream;

import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

public class Attribute {

@XStreamAsAttribute
private String name;

private String value;

public Attribute(String name, String value) {
this.name = name;
this.value = value;
}

/**
* @return the name
*/
public String getName() {
return name;
}

/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}

/**
* @return the value
*/
public String getValue() {
return value;
}

/**
* @param value the value to set
*/
public void setValue(String value) {
this.value = value;
}

/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Attribute [name=" + name + ", value=" + value + "]";
}

}

AttributeConverter 类是:

package com.xstream;

import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;

public class AttributeConverter implements Converter{

@Override
public boolean canConvert(Class clazz) {
return clazz.equals(Attribute.class);
}

@Override
public void marshal(Object object, HierarchicalStreamWriter writer, MarshallingContext context) {
System.out.println("object = " + object.toString());
Attribute attribute = (Attribute) object;
writer.addAttribute("name", attribute.getName());
writer.setValue(attribute.getValue());

}

@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
return new Attribute(reader.getAttribute("name"), reader.getValue());

}

}

在 Qualification 类中使用它作为:

  @XStreamConverter(AttributeConverter.class)
private Attribute attribute;

在主类中注册转换器为:

xstream.registerConverter(new AttributeConverter());

关于java - xstream 中的映射属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com