gpt4 book ai didi

java - 将对象序列化为 XML 时如何添加 XML 命名空间 (xmlns)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:34 25 4
gpt4 key购买 nike

我在 XStream 的帮助下将对象序列化为 XML。我如何告诉 XStream 将 xmlns 插入到我的对象的 XML 输出中?

例如,我有一个要序列化的简单对象:

@XStreamAlias(value="domain")
public class Domain
{
@XStreamAsAttribute
private String type;

private String os;

(...)
}

如何使用 XStream 实现完全以下输出?

<domain type="kvm" xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
<os>linux</os>
</domain>

最佳答案

XStream 不支持 namespace ,但 StaxDriver它使用,确实。您需要将命名空间的详细信息设置为 QNameMap并将其传递给 StaxDriver:

QNameMap qmap = new QNameMap();
qmap.setDefaultNamespace("http://libvirt.org/schemas/domain/qemu/1.0");
qmap.setDefaultPrefix("qemu");
StaxDriver staxDriver = new StaxDriver(qmap);
XStream xstream = new XStream(staxDriver);
xstream.autodetectAnnotations(true);
xstream.alias("domain", Domain.class);

Domain d = new Domain("kvm","linux");
String xml = xstream.toXML(d);

输出:

<qemu:domain type="kvm" xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
<qemu:os>linux</qemu:os>
</qemu:domain>

关于java - 将对象序列化为 XML 时如何添加 XML 命名空间 (xmlns),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6121040/

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