如何更改 Castor 映射以删除“xmlns:xsi”和“xsi:类型” XML 输出中元素的属性?
如何更改 Castor 映射
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.org/mapping.dtd">
<mapping>
<class name="java.util.ArrayList" auto-complete="true">
<map-to xml="ArrayList" />
</class>
<class name="com.db.spgit.abstrack.ws.response.UserResponse">
<map-to xml="UserResponse" />
<field name="id" type="java.lang.String">
<bind-xml name="id" node="element" />
</field>
<field name="deleted" type="boolean">
<bind-xml name="deleted" node="element" />
</field>
<field name="name" type="java.lang.String">
<bind-xml name="name" node="element" />
</field>
<field name="typeId" type="java.lang.Integer">
<bind-xml name="typeId" node="element" />
</field>
<field name="regionId" type="java.lang.Integer">
<bind-xml name="regionId" node="element" />
</field>
<field name="regionName" type="java.lang.String">
<bind-xml name="regionName" node="element" />
</field>
</class>
</mapping>
以抑制 XML 输出元素中的 xmlns:xsi
和 xsi:type
属性?例如,
<?xml version="1.0" encoding="UTF-8"?>
<ArrayList>
<UserResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="UserResponse">
<name>Tester</name>
<typeId>1</typeId>
<regionId>2</regionId>
<regionName>US</regionName>
</UserResponse>
</ArrayList>
我希望
<?xml version="1.0" encoding="UTF-8"?>
<ArrayList>
<UserResponse>
<name>Tester</name>
<typeId>1</typeId>
<regionId>2</regionId>
<regionName>US</regionName>
</UserResponse>
</ArrayList>
元素名称隐含 xsi:type
,而不是输出 XML。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将 Castor Marshaller 属性
suppressXSIType
设置为 false:请参阅 Castor 1.3.1 参考文档中的“配置 Marshaller” 。 (请注意,表 1.10 Marshaller 属性仅列出了属性
suppressNamespaces
,但方法setSuppressNamespaces()
和setSuppressXSIType()
均列出存在于类Marshaller
中。)Set the Castor Marshaller property
suppressXSIType
to false:See Configuring the Marshaller in the Castor 1.3.1 Reference Documentation. (Note that Table 1.10 Marshaller properties lists only property
suppressNamespaces
, but methodssetSuppressNamespaces()
andsetSuppressXSIType()
both exist in classMarshaller
.)