Castor (ram)
Stabil frisättning | 1.4.1 / 15 maj 2016
|
---|---|
Skrivet i | Java |
Operativ system | Cross-platform ( JVM ) |
Plattform | Java Virtual Machine |
Typ | Databindning |
Licens | Apache 2.0 |
Hemsida |
Castor är ett databindningsramverk för Java med vissa funktioner som Java till Java-till-XML-bindning, Java-till-SQL-beständighet, sökvägar mellan Java-objekt, XML- dokument, relationstabeller, etc. Castor är ett av de äldsta databindningsprojekten .
Process flöde
Grundläggande processflöden inkluderar klassgenerering, rangering , unmarshalling, etc. Marshalling-ramverket inkluderar en uppsättning ClassDescriptors och FieldDescription för att beskriva objekt.
Klassgenerering
Klassgenerering liknar JAXB och Zeus. Castor stöder XML Schema istället för DTDs (DTDs stöds inte av Castor).
Unmarshalling och rangering
Unmarshalling och marshalling behandlas med marshall() respektive unmarshall() metoder. Under rangering utförs konverteringsprocess från Java till XML, och under unmarshalling utförs konverteringsprocess från XML till Java. Mappningsfiler är motsvarigheten till ett bindningsschema, som gör det möjligt att omvandla namn från XML till Java och vice versa.
Ytterligare egenskaper
Castor erbjuder några ytterligare funktioner som inte finns i JAXB. Ytterligare funktioner inkluderar:
- Databas- och katalogservermappningar - mappning mellan databaser och katalogservrar till Java
- JDO - Caster stöder Java Data Objects .
Kodprover
Koden för rangering kan se ut som följer:
0
paket javajaxb ; importera java.io.File ; importera java.io.FileReader ; importera java.io.FileWriter ; importera java.io.IOException ; // Castor import org.exolab.castor.xml.MarshalException ; import org.exolab.castor.xml.ValidationException ; // Genererade hr.xml-klasser importerar javajaxb.generated.hr.* ; public class EmployeeLister { // Befintliga metoder public void modify () kastar IOException , MarshalException , ValidationException { // Lägg till en ny anställd Anställd anställd = ny anställd (); anställd . setName ( "Ben Rochester" ); Adressadress = ny adress () ; adress . setStreet1 ( "708 Teakwood Drive" ) ; adress . setCity ( "Flower Mound" ); adress . setState ( "TX" ); adress . setZipCode ( "75028" ); anställd . addAddress ( adress ); Organisation organisation = ny organisation (); organisation . setId ( 43 ); organisation . setName ( "Tekniska tjänster" ); anställd . setOrganization ( organisation ); Office office = new Office (); kontor . setId ( 241 ); Adress officeAddress = ny adress (); kontorsadress . setStreet1 ( "1202 Business Square" ); kontorsadress . setStreet2 ( "Suite 302" ); kontorsadress . setCity ( "Dallas" ); kontorsadress . setState ( "TX" ); kontorsadress . setZipCode ( "75218-8921" ); kontor . setAddress ( officeAddress ); anställd . setOffice ( kontor ); // Lägg till medarbetare i listan anställda . addEmployee ( anställd ); // marskalkanställda . marshal ( ny FileWriter ( outputFile )); } public static void main ( String [] args ) { try { if ( args . length != 2 ) { System . ut . println ( "Användning: java javajaxb.EmployeeLister " + "[web.xml filnamn] [output.xml filnamn]") ; återvända ; } EmployeeLister lister = new EmployeeLister ( ny fil ( args [ ] ), ny fil ( args [ 1 ] )); lister . lista ( sant ); lister . ändra (); } catch ( Undantag e ) { e . printStackTrace (); } } }
Koden för avmarshalling kan se ut så här:
0
0
paket javajaxb ; importera java.io.File ; importera java.io.FileReader ; importera java.io.IOException ; // Castor import org.exolab.castor.xml.MarshalException ; import org.exolab.castor.xml.ValidationException ; // Genererade hr.xml-klasser importerar javajaxb.generated.hr.* ; public class EmployeeLister { /** Beskrivningen att läsa i */ private File descriptor ; /** Utdatafilen att skriva till */ 150 private File outputFile ; /** Objektträdet läst i */ privata Anställda anställda ; public EmployeeLister ( File descriptor , File outputFile ) { anställda = null ; detta . deskriptor = deskriptor ; detta . outputFile = outputFile ; } public void list ( boolean validate ) kastar IOException , MarshalException , ValidationException { // Unmarshall anställda = Anställda . unmarshal ( ny FileReader ( descriptor )); // Gör något grundläggande utskriftssystem . ut . println ( "--- Medarbetarlista ---\n" ) ; Anställd [] anställdList = anställda . getEmployee (); for ( int i = ; i < anställdList . längd ; i ++ ) { Anställd anställd = anställd Lista [ i ] ; System . ut . println ( "Anställd: " + anställd . getName ()); System . ut . println ( "Organisation: " + anställd . getOrganization (). getName ()); System . ut . println ( "Office: " + anställd . getOffice (). getAddress (). getCity () + ", " + anställd . getOffice (). getAddress (). getState () + "\n" ); } } public static void main ( String [ ] args ) { try { if ( args . length != 2 ) { System . ut . println ( "Användning: java javajaxb.EmployeeLister " + "[web.xml filnamn] [output.xml filnamn]") ; återvända ; } EmployeeLister lister = new EmployeeLister ( ny fil ( args [ ] ), ny fil ( args [ 1 ] )); lister . lista ( sant ); } catch ( Undantag e ) { e . printStackTrace (); } } }
Exempelmappningsfil kan se ut så här:
<?xml version="1.0"?> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Object Mapping DTD Version 1.0//EN" "http://Castor.exolab.org/mapping.dtd"> <mapping> <class name= "javajaxb.generated.hr.Employees" > <map-to xml= "emp-list" /> <field name= "Employee" type= "javajaxb.generated.hr.Employee" > <bind-xml name= "emp" /> </field> </class> <class name= "javajaxb.generated.hr.Employee" > <field name= "Id" type= "integer" > <bind-xml name= "emp -id" node= "attribute" /> </field> <field name= "name" type= "java.lang.String" > <bind-xml name= "emp-name" node= "attribute" /> < /field> <field name= "Address" type= "javajaxb.generated.hr.Address" > <bind-xml name= "emp-address" /> </field> <field name= "Organisation" type= "javajaxb .generated.hr.Organization" > <bind-xml name= "emp-org" /> </field> <field name= "Office" type= "javajaxb.generated.hr.Office" > <bind-xml name= "emp-office" /> </field> </class> <class name= "javajaxb.generated.hr.Address" > <field name= "Street1" type= "java.lang.String" > <bind-xml name= "line-1" node= "element" /> </field> <field name= "Street2" type= "java.lang.String" > <bind-xml name= "line-2" node= "element " /> </field> <field name= "City" type= "java.lang.String" > <bind-xml name= "city" node= "element" /> </field> <field name= "State " type= "java.lang.String" > <bind-xml name= "state" node= "element" /> </field> <field name= "Postkod" type= "java.lang.String" > <bind -xml name= "zip-code" node= "element" /> </field> </class> <class name= "javajaxb.generated.hr.Office" > <field name= "Id" type= "heltal" > <bind-xml name= "office-id" node= "attribute" /> </field> <field name= "Address" type= "javajaxb.generated.hr.Address" > <bind-xml name= "kontor -address" node= "element" /> </field> </class> <class name= "javajaxb.generated.hr.Organization" > <field name= "Id" type= "integer" > <bind-xml name = "org-id" node= "element" /> </field> <field name= "Name" type= "java.lang.String" > <bind-xml name= "org-name" node= "element" /> </field> </class> </mapping>
Se även
- XML-databindning
- Lista över programvara för objektrelationell kartläggning
- Serialisering
- Tjänstedataobjekt
- Databindning