【问题标题】:How to remove namespace in XML through java? [duplicate]如何通过java删除XML中的命名空间? [复制]
【发布时间】:2014-05-13 15:51:36
【问题描述】:

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

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

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

我在互联网上进行了大量搜索,我将 xsd 属性 elementFormDefault 更改为“不合格”,并将 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 中的任何元素都不应包含任何命名空间/属性,即使它是空白或空值。

谢谢

【问题讨论】:

  • 这是你第三次问同样的问题。

标签: java xml namespaces jaxb marshalling


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 2017-08-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多