Я ищу библиотеку JavaScript, которая анализирует XML-строку и преобразует ее в объект JavaScript. Какие хорошие?
Объект XML для JavaScript
Ответ 1
анализирует XML и возвращает объект javascript с схемой, которая соответствует xml. xml siblings с тем же именем сбрасываются в массивы. узлы с именами, которые могут быть найдены в параметре arrayTags (массив тегов имен тегов), всегда содержат массивы yeld даже в случае появления только одного тега. arrayTags можно опустить. текстовые узлы w/только пробелы отбрасываются. используйте console.log(parseXml (myxml)), чтобы изучить выход
parseXml(xml, arrayTags)
{
var dom = null;
if (window.DOMParser)
{
dom = (new DOMParser()).parseFromString(xml, "text/xml");
}
else if (window.ActiveXObject)
{
dom = new ActiveXObject('Microsoft.XMLDOM');
dom.async = false;
if (!dom.loadXML(xml))
{
throw dom.parseError.reason + " " + dom.parseError.srcText;
}
}
else
{
throw "cannot parse xml string!";
}
function isArray(o)
{
return Object.prototype.toString.apply(o) === '[object Array]';
}
function parseNode(xmlNode, result)
{
if (xmlNode.nodeName == "#text") {
var v = xmlNode.nodeValue;
if (v.trim()) {
result['#text'] = v;
}
return;
}
var jsonNode = {};
var existing = result[xmlNode.nodeName];
if(existing)
{
if(!isArray(existing))
{
result[xmlNode.nodeName] = [existing, jsonNode];
}
else
{
result[xmlNode.nodeName].push(jsonNode);
}
}
else
{
if(arrayTags && arrayTags.indexOf(xmlNode.nodeName) != -1)
{
result[xmlNode.nodeName] = [jsonNode];
}
else
{
result[xmlNode.nodeName] = jsonNode;
}
}
if(xmlNode.attributes)
{
var length = xmlNode.attributes.length;
for(var i = 0; i < length; i++)
{
var attribute = xmlNode.attributes[i];
jsonNode[attribute.nodeName] = attribute.nodeValue;
}
}
var length = xmlNode.childNodes.length;
for(var i = 0; i < length; i++)
{
parseNode(xmlNode.childNodes[i], jsonNode);
}
}
var result = {};
if(dom.childNodes.length)
{
parseNode(dom.childNodes[0], result);
}
return result;
}
Ответ 2
Вот хороший конвертер xml2json и json2xml:
- http://goessner.net/download/prj/jsonxml/
- Связанный учебник: http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
Здесь еще один:
В зависимости от ваших потребностей вы можете использовать стандартный парсер (см. http://www.w3schools.com/XML/tryit.asp?filename=tryxml_parsertest2) и xpath (http://www.w3schools.com/xpath/default.asp) - вот пример:
и несколько хороших учебников:
Ответ 3
Файл javascript xml2json из https://bitbucket.org/surenrao/xml2json - это все, что вам нужно сделать.
Здесь скачать ссылку для быстрой загрузки: https://bitbucket.org/surenrao/xml2json/get/0e0989dfe48e.zip
После включения в ваш проект, вот несколько примеров кода, чтобы вы начали:
var xmlStr = "<root><person><name>Bob Dylan</name></person></root>";
var jsObj = X2J.parseXml(xmlStr);
var result = jsObj[0].root[0].person[0].name[0].jValue; //Bob Dylan