Я ищу хорошую библиотеку JavaScript для анализа данных XML. Он должен быть намного проще в использовании, чем встроенные парсеры XML DOM в комплекте с браузеры.
Я немного избалован работой с JSON и с нетерпением жду чего-то похожего для XML.
Я ищу хорошую библиотеку JavaScript для анализа данных XML. Он должен быть намного проще в использовании, чем встроенные парсеры XML DOM в комплекте с браузеры.
Я немного избалован работой с JSON и с нетерпением жду чего-то похожего для XML.
Для этого я использую jQuery. Вот хороший пример:
(РЕДАКТИРОВАТЬ: Примечание. Следующий блог, похоже, исчез.)
http://blog.reindel.com/2007/09/24/jquery-and-xml-revisited/
В документации jQuery также есть множество хороших примеров:
http://www.webmonkey.com/tutorial/Easy_XML_Consumment_using_jQuery?oldid=20032
РЕДАКТИРОВАТЬ: Из-за того, что блог для моего основного примера уходит, я хотел добавить еще один пример, который показывает основы и помогает с проблемами пространства имен:
http://www.zachleat.com/web/selecting-xml-with-javascript/
Отказ от ответственности: я являюсь автором библиотеки Jsonix с открытым исходным кодом, которая < em>может подойти для этой задачи.
Пару лет назад я также искал хорошую библиотеку разбора/сериализации XML‹->JSON для JavaScript. Мне нужно было обрабатывать документы XML, соответствующие довольно сложным схемам XML. В Java я обычно использую JAXB для задачи, поэтому я искал что-то подобное:
Есть ли API JavaScript для Привязка XML — аналог JAXB для Java?
Тогда я не нашел такого инструмента.
Поэтому я написал Jsonix, который считаю аналогом JAXB для JavaScript.
Вам может подойти Jsonix, если вас интересуют следующие функции:
QName
).amdefine
в Node.js)Однако Jsonix может быть излишним, если ваш XML довольно прост, не имеет XML-схемы или если вас не интересует строгая типизация или структуры. Проверьте свои требования.
Пример
Попробуйте в JSFiddle.
Вы можете взять схему заказа на покупку и создать для нее сопоставление. используя следующую команду:
java -jar node_modules/jsonix/lib/jsonix-schema-compiler-full.jar
-d mappings -p PO purchaseorder.xsd
Вы получите файл PO.js
, в котором описаны сопоставления между структурами XML и JavaScript. Вот фрагмент из этого файла сопоставления, чтобы дать вам представление:
var PO = {
name: 'PO',
typeInfos: [{
localName: 'PurchaseOrderType',
propertyInfos: [{
name: 'shipTo',
typeInfo: 'PO.USAddress'
}, {
name: 'billTo',
typeInfo: 'PO.USAddress'
}, {
name: 'comment'
}, {
name: 'orderDate',
typeInfo: 'Calendar',
type: 'attribute'
}, ...]
}, {
localName: 'USAddress',
propertyInfos: [ ... ]
}, ...],
elementInfos: [{
elementName: 'purchaseOrder',
typeInfo: 'PO.PurchaseOrderType'
}, ... ]
};
Имея этот файл сопоставления, вы можете проанализировать XML:
// First we construct a Jsonix context - a factory for unmarshaller (parser)
// and marshaller (serializer)
var context = new Jsonix.Context([PO]);
// Then we create a unmarshaller
var unmarshaller = context.createUnmarshaller();
// Unmarshal an object from the XML retrieved from the URL
unmarshaller.unmarshalURL('po.xml',
// This callback function will be provided
// with the result of the unmarshalling
function (unmarshalled) {
// Alice Smith
console.log(unmarshalled.value.shipTo.name);
// Baby Monitor
console.log(unmarshalled.value.items.item[1].productName);
});
Или сериализуйте свой объект JavaScript как XML:
// Create a marshaller
var marshaller = context.createMarshaller();
// Marshal a JavaScript Object as XML (DOM Document)
var doc = marshaller.marshalDocument({
name: {
localPart: "purchaseOrder"
},
value: {
orderDate: { year: 1999, month: 10, day: 20 },
shipTo: {
country: "US",
name: "Alice Smith",
street: "123 Maple Street",
city: "Mill Valley",
state: "CA",
zip: 90952
},
billTo: { /* ... */ },
comment: 'Hurry, my lawn is going wild!',
items: { /* ... */ }
}
});
Вы можете попробовать это в JSFiddle, чтобы увидеть, как это работает на практике.
Дополнительный отказ от ответственности: этот ответ получил большое количество голосов из-за после обсуждения метаданных. Имейте в виду «мета-эффект». Большое количество голосов здесь не обязательно означает, что Jsonix хорош, применим или рекомендован сообществом. Не вводите в заблуждение высокие голоса.
Если ваш XML имеет простой формат, вы можете просмотреть jQuery и плагин XML to JSON или xmlObjectifier.
Для прямого анализатора вы можете посмотреть XML для ‹SCRIPT›.
Пробовали ли вы использовать XML для SCRIPT. Я должен признать, что я никогда не использовал его лично, но я слышал/читал о нем несколько хороших вещей.
Попробуйте и, может быть, поделитесь своим опытом здесь?