Jump to content

Кастор (каркас)

Кастор
Стабильная версия
1.4.1 / 15 мая 2016 г .; 8 лет назад ( 15 мая 2016 )
Написано в Ява
Операционная система Кроссплатформенность ( JVM )
Платформа Виртуальная машина Java
Тип Привязка данных
Лицензия Апач 2.0
Веб-сайт привязка данных Castor .github .что /кастор /

Castor — это платформа привязки данных для Java с некоторыми функциями, такими как привязка Java к Java-XML, сохранение Java-to-SQL, пути между объектами Java, документами XML , реляционными таблицами и т. д. [1] [2] [3] Castor — один из старейших проектов по связыванию данных. [3]

Ход процесса

[ редактировать ]

Основные потоки процессов включают генерацию классов, маршалинг , демаршалинг и т. д. [2] Платформа маршаллинга включает набор ClassDescriptors и FieldDescription для описания объектов. [3]

Генерация классов

[ редактировать ]

Генерация классов аналогична JAXB и Zeus. Castor поддерживает схему XML вместо DTD (DTD не поддерживаются Castor). [2] [3] [4]

Демаршалинг и маршалинг

[ редактировать ]

Демаршалинг и маршалинг выполняются с помощью методов marshall() и unmarshall() соответственно. Во время маршаллинга выполняется процесс преобразования из Java в XML, а во время демаршаллинга — процесс преобразования из XML в Java. Файлы сопоставления являются эквивалентом схемы привязки, которая позволяет преобразовывать имена из XML в Java и наоборот. [2]

Дополнительные возможности

[ редактировать ]

Castor предлагает некоторые дополнительные функции, которых нет в JAXB. Дополнительные функции включают в себя:

  • Сопоставление баз данных и серверов каталогов — сопоставление баз данных и серверов каталогов с Java.
  • JDO-Caster поддерживает объекты данных Java . [2]

Примеры кода

[ редактировать ]

Код для маршалинга может выглядеть следующим образом:

package javajaxb;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;// Castorimport org.exolab.castor.xml.MarshalException;import org.exolab.castor.xml.ValidationException;// Generated hr.xml classesimport javajaxb.generated.hr.*;public class EmployeeLister {    // Existing methods    public void modify()        throws IOException, MarshalException, ValidationException {        // Add a new employee        Employee employee = new Employee();        employee.setName("Ben Rochester");        Address address = new Address();        address.setStreet1("708 Teakwood Drive");        address.setCity("Flower Mound");        address.setState("TX");        address.setZipCode("75028");        employee.addAddress(address);        Organization organization = new Organization();        organization.setId(43);        organization.setName("Technical Services");        employee.setOrganization(organization);        Office office = new Office();        office.setId(241);        Address officeAddress = new Address();        officeAddress.setStreet1("1202 Business Square");        officeAddress.setStreet2("Suite 302");        officeAddress.setCity("Dallas");        officeAddress.setState("TX");        officeAddress.setZipCode("75218-8921");        office.setAddress(officeAddress);        employee.setOffice(office);        // Add employee to list        employees.addEmployee(employee);        // marshal        employees.marshal(new FileWriter(outputFile));    }    public static void main(String[] args) {        try {            if (args.length != 2) {                System.out.println("Usage: java javajaxb.EmployeeLister" +                    "[web.xml filename] [output.xml filename]");                return;            }            EmployeeLister lister =                 new EmployeeLister(new File(args[0]), newFile(args[1]));            lister.list(true);            lister.modify();        } catch (Exception e) {            e.printStackTrace();        }    }   }

[2]

Код демаршалинга может выглядеть следующим образом:

package javajaxb;import java.io.File;import java.io.FileReader;import java.io.IOException;// Castorimport org.exolab.castor.xml.MarshalException;import org.exolab.castor.xml.ValidationException;// Generated hr.xml classesimport javajaxb.generated.hr.*;public class EmployeeLister {    /** The descriptor to read in */    private File descriptor;    /** The output file to write to */150    private File outputFile;    /** The object tree read in */    private Employees employees;    public EmployeeLister(File descriptor, File outputFile) {        employees = null;        this.descriptor = descriptor;        this.outputFile = outputFile;    }    public void list(boolean validate)         throws IOException, MarshalException, ValidationException {        // Unmarshall        employees = Employees.unmarshal(new FileReader(descriptor));        // Do some basic printing        System.out.println("--- Employee Listing ---\n");        Employee[] employeeList = employees.getEmployee();        for (int i=0; i<employeeList.length; i++) {            Employee employee = employeeList[i];            System.out.println("Employee: " + employee.getName());            System.out.println("Organization: " +                 employee.getOrganization().getName());            System.out.println("Office: " +                 employee.getOffice().getAddress().getCity() + ", " +                employee.getOffice().getAddress().getState() + "\n");        }    }    public static void main(String[] args) {        try {            if (args.length != 2) {                System.out.println("Usage: java javajaxb.EmployeeLister" +                    "[web.xml filename] [output.xml filename]");                return;            }            EmployeeLister lister =                 new EmployeeLister(new File(args[0]), newFile(args[1]));            lister.list(true);        } catch (Exception e) {            e.printStackTrace();        }    }   }

[2]

Пример файла сопоставления может выглядеть следующим образом:

<?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="Organization"           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="ZipCode"           type="java.lang.String">      <bind-xml name="zip-code" node="element"/>    </field>  </class>  <class name="javajaxb.generated.hr.Office">    <field name="Id"           type="integer">      <bind-xml name="office-id" node="attribute"/>    </field>    <field name="Address"           type="javajaxb.generated.hr.Address">      <bind-xml name="office-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>

[2]

См. также

[ редактировать ]
  1. ^ "О" . Кастор . Гитхаб . Проверено 11 февраля 2016 г.
  2. ^ Перейти обратно: а б с д и ж г час Маклафхин, Б. (2002). Связывание данных Java и XML . Севастополь: O'Reilly & Associates, Inc., стр. 143–165.
  3. ^ Перейти обратно: а б с д Руководство разработчика XML . Скоттс-Вэлли, США: Borland Software Corporation. 2002. стр. (2–29)–(2–31).
  4. ^ «Генератор исходного кода» . Кастор . Гитхаб . Проверено 11 февраля 2016 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9472cc6bc166f28359e7cd8276eda99c__1698637680
URL1:https://arc.ask3.ru/arc/aa/94/9c/9472cc6bc166f28359e7cd8276eda99c.html
Заголовок, (Title) документа по адресу, URL1:
Castor (framework) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)