В Java мы много работаем с JAXB2. Object ↔ 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 в экземпляр объекта или сортировать объект в XML.
JAXB отправляет компилятор схемы (XJC), который может генерировать аннотированные классы из XML-схем, что является еще одной замечательной функцией.
В последнее время мы много работаем с клиентским 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()
})
}
]
});
И это должно быть достаточно, чтобы создать unmarshaller или marshaller.