代码之家  ›  专栏  ›  技术社区  ›  Derek Mahar

如何更改Castor映射以删除“xmlns:xsi“和”xsi:type“XML输出中元素的属性?

  •  4
  • Derek Mahar  · 技术社区  · 15 年前

    如何更改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>
    

    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 .

    1 回复  |  直到 15 年前
        1
  •  6
  •   Derek Mahar    15 年前

    设置Castor Marshaller属性 suppressXSIType 为假:

    Marshaller marshaller = new Marshaller(w);
    marshaller.setSuppressXSIType(true);
    

    看到了吗 Configuring the Marshaller Castor 1.3.1 Reference Documentation . (请注意 表1.10马歇尔特性 suppressNamespaces ,但方法 setSuppressNamespaces() setSuppressXSIType() 两者都存在于课堂上 Marshaller .)