【问题标题】:Getting the XSD source from an org.eclipse.xsd.XSDSchema object?从 org.eclipse.xsd.XSDSchema 对象获取 XSD 源?
【发布时间】:2011-09-29 04:25:58
【问题描述】:

我正在使用 org.eclipse.xsd.XSDSchema 解析一个 XML Schema 文件 (*.xsd),并希望将一些 XSDTypeDefinitions 显示为文字 XSD 源。

这是一个示例架构:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="shiporder">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="orderperson" type="xs:string"/>
          <xs:element name="shipto">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="address" type="xs:string"/>
                <xs:element name="city" type="xs:string"/>
                <xs:element name="country" type="xs:string"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
      </xs:complexType>
    </xs:element>
</xs:schema>

下面是一些说明问题的代码:

XSDSchema schema = loadSchemaFromFile(); // not shown
for(XSDElementDeclaration element : schema.getElementDeclarations()){
    assert element.getName().equals("shiporder");

    String xsdSource = // NOW WHAT DO I NEED TO DO HERE?

    String expectedXsdSource = "<xs:element name=\"shiporder\">" +
        "  <xs:complexType>" +
        "    <xs:sequence>" +
        "      <xs:element name=\"orderperson\" type=\"xs:string\"/>" +
        "      <xs:element name=\"shipto\">" +
        "        <xs:complexType>" +
        "          <xs:sequence>" +
        "            <xs:element name=\"address\" type=\"xs:string\"/>" +
        "          </xs:sequence>" +
        "        </xs:complexType>" +
        "      </xs:element>" +
        "  </xs:complexType>" +
        "</xs:element>";

    assert xsdSource.equals(expectedXsdSource);
}

我正在使用 Eclipse 3.7 安装中的以下 jar 文件:

  • org.eclipse.xsd_2.7.0.v20110606-0949.jar
  • org.eclipse.emf.ecore_2.7.0.v20110605-0747.jar
  • org.eclipse.emf.common_2.7.0.v20110605-0747.jar

【问题讨论】:

    标签: java xsd eclipse-emf


    【解决方案1】:

    使用 String.equals 比较两个 XML 文档可能很危险,因为空格可能会有所不同,即使它不应该影响相等性。

    使用isEqualNode怎么样?您可以使用getDocument 方法和以下guide 转换您的架构字符串,将org.eclipse.xsd.XSDSchema 转换为org.w3c.dom.Document?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 2012-12-12
      相关资源
      最近更新 更多