我正在使用spring rest模板与使用wcf(使用xml)编写的rest服务进行交互。
我有一个名为Rule的实体类,它有一个公共字段和一个包含一些特定字段的子类CustomRule。
WCF服务期望按字母顺序排列xml元素,我尝试在我的基类和子类上使用@XmlAccessorOrder,但生成的xml按排序顺序具有基类字段,排序顺序包含子类字段,但xml中的所有元素都未排序
即。 如果规则有字段S,A,B
CustomRule有Z,C
我希望xml中有A,B,C,S,Z顺序,
而是我得到A,B,S,C,Z。
有人可以帮忙吗?
是否可以根据XmlElement类型中的值而不是类中的varibale名称来命令xml元素?
答案 0 :(得分:0)
您无法在XML中订购,但您可以从xml进行xslt转换:Transform From one JAXB object to another using XSLT template
当您编写xslt模板时,您可以对要排序的元素应用sort tag:Sort XML nodes in alphabetical order using XSL
按名称排序的XSLT示例:
<xsl:template match="element_list">
<xsl:apply-templates select="elements" />
</xsl:template>
<xsl:template match="elements">
<table>
<tbody>
<xsl:apply-templates select="element">
<xsl:sort select="name" />
</xsl:apply-templates>
</tbody>
</table>
</xsl:template>
XML文件:
<element_list>
<element>
<name>Foo</name>
</element>
<element>
<name>Bar</name>
</element>
<element>
<name>WWW</name>
</element>
<element>
<name>AAA</name>
</element>
</element_list>
您将获得一张包含以下订单的表格:AAA,Bar,Foo,WWW