В 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 может считывать эти аннотации и создавать демаршаллер для разбора 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.