0 0

spring mvc 使用XStream返回xml下划线问题5

小弟今天用Spring mvc XStream 返回xml数据,发现给返回的pojo对象修改别名(改成有别名中有"_")的问题:

返回的POJO对象:


返回到前端的XML数据:



按道理graphicId应该是以grapic_id作为名称,但是实际返回的是grapic__id两个下划线,这个问题如何解决,大家帮忙。感谢
2013年4月20日 00:56
  • 大小: 32.9 KB
  • 大小: 20.9 KB

2个答案 按时间排序 按投票排序

0 0

采纳的答案

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
0 0

因为XStream用下划线当转义符。
你恐怕得自定义个NameCoder

参考

官方:http://xstream.codehaus.org/faq.html
stackoverflow:
http://stackoverflow.com/questions/9800494/xstream-double-underline-handling-java

2013年4月20日 08:32

相关推荐

    Java用xStream拼接xml

    在Web Service接口对接时,如果需要传递XML内容,使用xStream可以高效、便捷地完成XML的拼接。通过合理配置和使用,xStream能够帮助开发者提高代码的可读性和维护性,从而提升项目的整体质量。在实际项目中,结合...

    Xstream生产xml和解析xml

    例如,别名中使用下划线`_`时,转换后的XML中可能会出现`__`的情况,为了避免这类问题,建议使用连字符`-`代替。同时,对于类中的常量,如果不希望它们在XML中生成额外的节点,可以使用`@XStreamOmitField`注解来...

    XStream解析XML实例

    这个实例将深入探讨如何使用XStream进行XML操作。 **1. XStream简介** XStream是一个开源库,由Joe Walnes创建,它提供了Java对象到XML和XML到Java对象的直接映射。它的主要优点是其简洁的API和易于理解的输出。...

    XStream解析xml demo

    接下来,我们将演示如何使用XStream进行XML的解析和生成。首先,我们需要创建一个XStream实例,并对其进行配置。这通常包括设置一个安全的转换器工厂,以防止潜在的安全漏洞: ```java import ...

    使用XStream操作xml教程

    本教程将深入探讨如何使用XStream进行XML操作。 一、XStream简介 XStream是一个开源库,由Johannes Link开发,它允许开发者以一种声明性方式将Java对象序列化为XML,然后又可以从XML还原回对象。XStream的核心理念...

    java 利用Xstream注解生成和解析xml

    Xstream通过使用注解提供了高度的灵活性,使得XML的生成和解析更加简单和直观。在这篇文章中,我们将深入探讨如何利用Xstream的注解来处理XML。 首先,要使用Xstream,我们需要在项目中引入其依赖。如果你使用的是...

    使用xstream解析xml,xml与pojo的双向转化,完整的java 工程

    调用`XStream.fromXML()`方法,传入XML字符串,返回对应类型的Java对象。 6. 测试:在"src"目录下的测试类中,可以编写单元测试,验证XML到POJO和POJO到XML的转化是否正确。通常会使用JUnit或TestNG等测试框架。 ...

    利用XStream读写xml文件

    通过本篇内容的学习,我们了解了XStream的基本原理以及如何使用它来读写XML文件。XStream不仅简化了XML与Java对象之间的转换过程,还提高了开发效率。在实际项目中,合理利用XStream可以有效地管理复杂的数据结构。

    json XStream

    XStream是一个用于Java的XML序列化库,它能够将Java对象转换为XML,反之亦然。XStream的核心特性是它的简单性,使得它可以轻松地处理复杂的对象结构,并且提供了一种直观的方式来映射对象和XML之间的关系。 在...

    xml解析及使用XStream实现javaBean与xml之间的转换

    本篇将详细讲解XML的解析方式及其在Java中的应用,特别是如何使用XStream库进行JavaBean与XML之间的互转。 1. **XML解析方式** - DOM解析:Document Object Model,它一次性加载整个XML文档到内存,形成一棵树形...

    使用XStream 多集合生成xml

    在这个场景中,"使用XStream多集合生成xml"是一个关键的技术点,它涉及到如何将多个集合类的对象转换成XML文档。以下是对这一主题的详细说明。 首先,我们需要了解XStream的基本用法。XStream的核心是`XStream`类,...

    Xstream解析xml

    总的来说,使用Xstream解析XML文件并存入MySQL数据库是一个常见的数据处理任务,它涉及XML解析、Java对象映射以及数据库操作等多个技术点。通过合理地组织代码,可以高效地完成这项工作,实现数据的无缝迁移和存储。

    xstream将xml文档转换成json对象

    在这个场景中,我们将探讨如何使用XStream将XML文档转换成Java对象,进而转化为JSON对象。 首先,我们需要引入XStream库。XStream的核心功能是能够将Java对象和XML之间的映射自动化,极大地简化了序列化和反序列化...

    XStream解析xml 转换成对象案例

    本篇文章将深入探讨如何使用XStream进行XML到对象的转换,并提供一个实际的案例。 首先,理解XStream的基本工作原理是至关重要的。XStream通过映射XML节点到Java类的字段来实现对象的序列化和反序列化。这意味着你...

    XStream XML解析

    **XStream XML解析** XStream 是一个开源的 Java 库,它提供了一种简单而有效的方式来将 Java 对象序列化为 XML 和从 XML 反序列化回 Java 对象。这个库的强大之处在于其简洁的API和对复杂Java对象模型的处理能力。...

    xStream转换xml和json源码

    尽管xStream轻量且易于使用,但在处理不受信任的输入时需要注意安全问题。默认情况下,xStream允许任何类被反序列化,这可能导致安全漏洞。为避免此风险,你应该配置xStream以只允许白名单类的反序列化。 总的来说...

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    对于Map集合,XStream会使用键作为XML标签,值作为内容: ```java Map, String&gt; map = new HashMap(); map.put("key1", "value1"); map.put("key2", "value2"); String xmlMap = xstream.toXML(map); ``` ...

    xstream解析xml

    1. **直观的映射:** XStream通过使用注解或配置来定义Java类与XML元素之间的映射关系。这种映射方式使得代码更简洁且易于理解。 2. **自动类型探测:** 在没有明确映射的情况下,XStream能够自动推断对象的类型,...

    xstream轻松解析xml到java对象

    使用XStream进行序列化非常简单,首先创建一个XStream实例,然后调用`toXML()`方法即可: ```java XStream xstream = new XStream(); String xml = xstream.toXML(yourJavaObject); ``` 反序列化则是通过`from...

    xstream对象与xml转换

    现在,我们可以使用XStream进行对象到XML的转换。首先,创建一个XStream实例,并对其进行配置: ```java XStream xstream = new XStream(); xstream.alias("person", Person.class); // 给类名设置别名,可读性更高...

Global site tag (gtag.js) - Google Analytics