В 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 в экземпляре объекта или маршалинга объекта в 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()
})
}
]
});
И этого должно быть достаточно для построения демаршаллера или маршаллера.