Есть ли API JavaScript для XML-привязки - аналог JAXB для Java?

StackOverflow https://stackoverflow.com/questions/3819192

Вопрос

В Java мы много работаем с JAXB2. Объекты <-> сопоставления XML определяются как аннотации в классах Java:

@XmlRootElement(name="usertask", namespace="urn:test")
public class UserTask
{
    @XmlElement(namespace="urn:test")
    public String getAssignee() { ... }

    public void setAssignee(String assignee) { ... }
}

Время выполнения JAXB может прочитать эти аннотации и создавать UnmarShaller для анализа XML в экземпляр объекта или Marshall объект в XML.

Jaxb поставляет компилятор схемы (XJC), который может генерировать аннотированные классы из XML Schemas, что является еще одной великой функцией.


В последнее время мы много работали с JavaScript на стороне клиента. Нам также нужна обработка XML там. Например, нам нужно анализировать документы WPS, как Вот этот. Отказ Эти документы также соответствуют Разные схемы XML (Вот Схема WPS 1.0.0 Для образца XML). Было бы здорово работать с объектами JavaScript вместо XML, это экономит действительно огромное количество усилий. В некоторых случаях мы можем использовать решения на основе JSON, такие как Dwr., Но во многих случаях мы должны обрабатывать XML на стороне клиента.

Мой вопрос:

Есть ли какой-то аналог JAXB для JavaScript?

Некоторый инструмент, который будет сознавать XML-схему в некоторое XML <-> отображение объектов и обеспечивает время выполнения для преобразования между объектами XML и JavaScript?

Я мог легко представить сопоставления, созданные в форме, как:

UserTask = new JSXML.XmlRootElement({
  name: "usertask",
  namespace: "urn:test",
  properties: [
    {
      assignee: new JSXML.XmlElement({
        name: "assignee",
        namespace: "urn:test",
        type: new JSXML.XSD.String()
      })
    }
  ]
});

И это должно быть достаточно довольно, чтобы построить монаршаллер или маршаллер.

Это было полезно?

Решение

Как насчет поддержки JSON для JAXB? Повторно используйте текущую JAXB Annotated Model Classes, но вывод JSON с ваших конечных точек отдыха.

Текущие версии Джерси поддерживать это (через Джерси-Джон модуль) с Jsonjaxbcontext..

Вы также можете попробовать ДжексонС. Jaxb. а также Джекс-РС служба поддержки.

Другие советы

На сегодняшний день я не нашел ничего похоже на то, что мне нужно. Поэтому я переиграл, чтобы реализовать это сам. Вот страница проекта:

http://confluence.highsource.org/display/misc/jsonix.

Проект размещен на GitHub:

https://github.com/highsource/jsonix/

Я не пробовал это, поэтому я не уверен, будет ли он работать, но вы подумали, используя GWT, чтобы вы все еще могли использовать JAXB и напишите все приложение в виде приложения Java? Я не уверен, что GWT поддерживает JAXB (вероятно, нет), но может быть альтернатива для анализа XML, что он будет поддерживать. Если это работает, вы можете автоматизировать создание ваших моделей JavaScript через GWT, а затем включить их в ваше приложение. Да, это намного больше Cruft, чем вы хотите, но бьется, чтобы написать это с нуля.

То, что вы можете сделать, это добавить общее определение таблицы стилей: XSLT к вашему XML для преобразования их в JSON. например: http://code.google.com/p/xml2json-xslt/

Обработка XML с JavaScript - это боль по сравнению с JSON, особенно перекрестным браузером.
Stylesheet добавит небольшой накладной расходы на ваш запрос. Либо на сервере или на стороне клиента, вы можете выбрать, но вы должны сравнить это с сложностью и скоростью кода, чтобы разбираться и прочитать XML с JavaScript на разных браузерах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top