2011-07-05 4 views
1

私はorg.eclipse.xsd.XSDSchemaを使用してXMLスキーマファイル(* .xsd)を解析しており、リテラルXSDソースとしていくつかのXSDTypeDefinitionsを表示したいと考えています。ここでorg.eclipse.xsd.XSDSchemaオブジェクトから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

答えて

1

かもしれないString.equalsを使用して2つのXML文書を比較すると、平等に影響を与えてはいけないにもかかわらず、白い空白が危険な場合があります。

isEqualNodeはどうですか? getDocumentメソッドを使用し、guideを使用してスキーマ文字列を変換すると、org.eclipse.xsd.XSDSchemaをorg.w3c.dom.Documentに変換できますか?

関連する問題