Java 如何在SpringBatch中使用XStream向XML添加名称空间前缀

Java 如何在SpringBatch中使用XStream向XML添加名称空间前缀,java,spring-batch,xstream,Java,Spring Batch,Xstream,我正在使用SpringBatch的XStreamMarshaller生成XML,如何向节点添加前缀名称空间 我的Java对象: package.com.app; 公共类用户{ int-id; 字符串用户名; 字符串密码; 智力年龄; //…getter和setter方法 } 我现在得到这样的东西: 1. 应用程序 密码 30 但我需要的是: 1. 应用程序 密码 30 我试图将xstream别名注释添加到User.java,但似乎不起作用。 非常感谢您提供的任何帮助,谢谢您请尝试下

我正在使用SpringBatch的XStreamMarshaller生成XML,如何向节点添加前缀名称空间


我的Java对象:

package.com.app;
公共类用户{
int-id;
字符串用户名;
字符串密码;
智力年龄;
//…getter和setter方法
}
我现在得到这样的东西:


1.
应用程序
密码
30
但我需要的是:


1.
应用程序
密码
30
我试图将xstream别名注释添加到User.java,但似乎不起作用。
非常感谢您提供的任何帮助,谢谢您

请尝试下面的代码,我已更新属性rootTagName别名输入键,如下所示:

<bean id="itemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter">
    <property name="resource" value="file:xml/outputs/users.xml" />
    <property name="marshaller" ref="userUnmarshaller" />
    <property name="rootTagName" value="ns1:users" />
</bean>

<bean id="userUnmarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
    <property name="aliases">
        <util:map id="aliases">
            <entry key="ns2:user" value="com.mkyong.User" />
        </util:map>
    </property>
</bean>


我认为XStream没有对名称空间的本机支持(这取决于解析器配置,而且有限)。XStreamAlias是一种黑客,并不总是有效。但是你想要的东西可以很容易地用JAXB实现。@helderdarocha是的,也许我应该用JAXB迁移所有的应用程序,很遗憾浪费了Xstream已经完成的所有工作,谢谢你的支持answer@hb.Sara看看这里,在配置XStream时重新考虑名称空间和xml头声明,您还可以配置默认名称空间和编写器,从而微调输出。但是,如果您想使用许多不同的名称空间,请为此使用一个更好的(基于模式的)库(如JAXB)。如果您想在没有模式的情况下将对象序列化为xml(或返回),那么XStream非常棒。@Matthias谢谢,我迁移到JaxB,它支持更好的名称空间。谢谢您,Braj,我迁移到JaxB,它支持更好的名称空间。