-
spring mvc 使用XStream返回xml下划线问题5
小弟今天用Spring mvc XStream 返回xml数据,发现给返回的pojo对象修改别名(改成有别名中有"_")的问题:
返回的POJO对象:
返回到前端的XML数据:
按道理graphicId应该是以grapic_id作为名称,但是实际返回的是grapic__id两个下划线,这个问题如何解决,大家帮忙。感谢2013年4月20日 00:56
2个答案 按时间排序 按投票排序
-
采纳的答案
Why do field names suddenly have double underscores in the generated XML?
XStream maps Java class names and field names to XML tags or attributes. Unfortunately this mapping cannot be 1:1, since some characters used for identifiers in Java are invalid in XML names. Therefore XStream uses an XmlFriendlyNameCoder to replace these characters with a replacement. By default this NameCoder uses an underscore as escape character and has therefore to escape the underscore itself also. You may provide a different configured instance of the XmlFriendlyNameCoder or a complete different implementation like the NoNameCoder to prevent name coding at all. However it is your responsibility then to ensure, that the resulting names are valid for XML.
http://xstream.codehaus.org/faq.html
1、1.4及以后
<bean id="marshaller" class="org.springframework.oxm.xstream.AnnotationXStreamMarshaller">
<property name="streamDriver">
<bean class="com.thoughtworks.xstream.io.xml.StaxDriver">
<constructor-arg>
<bean class="com.thoughtworks.xstream.io.naming.NoNameCoder()">
</bean>
</constructor-arg>
</bean>
</property>
</bean>
2、1.4之前
<bean id="marshaller" class="org.springframework.oxm.xstream.AnnotationXStreamMarshaller">
<property name="streamDriver">
<bean class="com.thoughtworks.xstream.io.xml.XppDriver">
<constructor-arg>
<bean class="com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer">
<constructor-arg index="0" value="_-"/>
<constructor-arg index="1" value="_"/>
</bean>
</constructor-arg>
</bean>
</property>
</bean>
3、注册到spring mvc
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="marshaller" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>2013年4月20日 08:39
-
因为XStream用下划线当转义符。
你恐怕得自定义个NameCoder
参考
官方:http://xstream.codehaus.org/faq.html
stackoverflow:
http://stackoverflow.com/questions/9800494/xstream-double-underline-handling-java2013年4月20日 08:32
相关推荐
Xstream生产xml和解析xml
webService接口对接时,需要传递一个xml内容。用xStream拼接xml
XStream解析xml demo
利用XStream读写xml文件
使用xstream解析xml,xml与pojo的双向转化,完整的java 工程 带jar包和测试类,可以直接跑
XStream是以个实现序列化数据和xml之间相互转换的类库,使用非常简单、方便
使用Xstream解析复杂xml文件,并读入MySql数据库中
XStream解析XML实例
xStream xml to bean,使用xStream 互转 xml 、bean. 的一个工具类。
使用xStream实现java对象和xml、json的相互转换
XStream必须架包
xstream 将xml文档转换成 java对象,然后就可以利用json库转成json对象啦。
XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...
利用xstream的@XStreamAlias解析xml
XStream XML解析 含样例及详细嵌入文档
一个小demo展示xml的两种解析方式和四种解析方法,以及使用XStream进行javaBean与xml、json之间的转换
xstream方式解析及生成xml文件
里面有位前辈的代码,是从外部读取xml的
使用xstream进行java类与xml文件互转解析
xstream轻松解析xml到java对象,内附样例。so easy!妈妈再也不用担心我的xml解析。