如何通过java删除XML中的命名空间?

时间:2014-05-13 15:51:37

标签: java xml namespaces jaxb marshalling

使用XSD文件我已经生成了JAXB类,最后通过这些JAXB类进行编组以生成XML文件。但输出是这样的: -

 <Central_Case_Id xsi:nil="true" xmlns:xsi="http://www.w3.org/xmls_schema-instance"/>

XML中每个should元素的预期输出应该是这样的: - [代码=的java] [/代码]

我在互联网上做了很多搜索,我将xsd属性,elementFormDefault更改为&#34;不合格&#34;并且还将attributeFormDefault属性添加到限定和非限定,但没有任何作用。

XSD: -

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="ICMS" targetNamespace="ICMS"
  elementFormDefault="qualified">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Case_Detail" minOccurs="0"/>
       </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Case_Detail">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Central_Case_ID"/>
        <xs:element ref="Agency_Case_ID"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Central_Case_ID" nillable="true">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="20"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="Agency_Case_ID" nillable="true">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="50"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>  
</xs:schema>

每个元素的预期输出为: -

<Central_Case_Id></Central_Case_Id>

您能否告诉我XSD文件或编组中的哪些属性可以帮助我实现这一目标?我的要求是XML中的任何元素都不应该包含任何命名空间/属性,即使它是空值或空值。

由于

1 个答案:

答案 0 :(得分:1)

因为在你的XSD中你有nillable =“true”。从XSD中删除它,重新生成JAXBElements,然后检查输出。