Следующие инструменты работают довольно хорошо, но не полностью согласованы:

Кто-нибудь сталкивался с такой ситуацией раньше?

Я думаю, что это лучший вариант:

— моя собственная библиотека (обновлен URL с http://code.google.com/p/x2js/ http://code.google.com/p/x2js/ ):

Эта библиотека предоставляет функции преобразования XML в JSON (объекты JavaScript) и наоборот, а также функции преобразования JavaScript. Библиотека очень маленькая и не требует никаких дополнительных библиотек.

API функции

  • new X2JS () — для создания вашего экземпляра для доступа ко всем функциям библиотеки. Также вы можете указать дополнительные параметры конфигурации здесь
  • X2JS.xml2json — преобразование XML, указанного в качестве объекта DOM, в JSON
  • Вот еще один метод, позволяющий найти количество дубликатов и легко удалить их из объекта данных. «dupsCount» — количество дубликатов файлов. сначала отсортируйте данные, а затем удалите. это даст вам самое быстрое удаление дублирования.
  • Это приемлемо?
  • X2JS.json2xml_str — конвертировать JSON в строку XML

Онлайн-демонстрация на http://jsfiddle.net/abdmob/gkxucxrj/1/

var x2js = new X2JS();
function convertXml2JSon() {
    $("#jsonArea").val(JSON.stringify(x2js.xml_str2json($("#xmlArea").val())));
}

function convertJSon2XML() {
    $("#xmlArea").val(x2js.json2xml_str($.parseJSON($("#jsonArea").val())));
}

convertXml2JSon();
convertJSon2XML();
$("#convertToJsonBtn").click(convertXml2JSon);
$("#convertToXmlBtn").click(convertJSon2XML);

Эти ответы помогли мне многое сделать для этой функции:

function xml2json(xml) {
  try {
    var obj = {};
    if (xml.children.length > 0) {
      for (var i = 0; i < xml.children.length; i  ) {
        var item = xml.children.item(i);
        var nodeName = item.nodeName;

        if (typeof (obj[nodeName]) == "undefined") {
          obj[nodeName] = xml2json(item);
        } else {
          if (typeof (obj[nodeName].push) == "undefined") {
            var old = obj[nodeName];

            obj[nodeName] = [];
            obj[nodeName].push(old);
          }
          obj[nodeName].push(xml2json(item));
        }
      }
    } else {
      obj = xml.textContent;
    }
    return obj;
  } catch (e) {
      console.log(e.message);
  }
}

Пока вы передаете объект jquery dom / xml: для меня это было:

Jquery(this).find('content').eq(0)[0]

Как указывают @squint и @mekdev, вы получаете лучшая производительность, сначала создав функцию вне цикла, а затем связав результаты внутри цикла. content — это поле, в котором я хранил свой xml.

Некоторое время назад я написал этот инструмент https://bitbucket.org/surenrao/xml2json для своего приложения TV Watchlist, надеюсь, это тоже поможет.

Synopsys: библиотека, которая не только конвертирует xml в json, но также легко отлаживается (без циклических ошибок) и воссоздает json обратно в xml. Особенности: — Разбор XML для JSON объекта. Распечатать объект JSON обратно в XML. Может использоваться для сохранения XML в IndexedDB в качестве объектов X2J. Распечатать объект json.

Я бы лично порекомендовал этот инструмент . Это конвертер XML в JSON.

Это очень легкий и чистый JavaScript. Это не требует никаких зависимостей. Вы можете просто добавить функции в свой код и использовать его по своему желанию.

Он также учитывает атрибуты XML.

var xml = ‘<person id=”1234” age=”30”><name>John Doe</name></person>’;
var json = xml2json(xml); 

console.log(json); 
// prints ‘{“person”: {“id”: “1234”, “age”: “30”, “name”: “John Doe”}}’

Вот демоверсия онлайн !

Отказ от ответственности: я написал fast-xml-parser

Fast XML Parser может помочь конвертировать XML в JSON и наоборот. Вот пример ;

var options = {
    attributeNamePrefix : "@_",
    attrNodeName: "attr", //default is 'false'
    textNodeName : "#text",
    ignoreAttributes : true,
    ignoreNameSpace : false,
    allowBooleanAttributes : false,
    parseNodeValue : true,
    parseAttributeValue : false,
    trimValues: true,
    decodeHTMLchar: false,
    cdataTagName: "__cdata", //default is 'false'
    cdataPositionChar: "\c",
};
if(parser.validate(xmlData)=== true){//optional
    var jsonObj = parser.parse(xmlData,options);
}

Если вы хотите проанализировать объект JSON или JS в XML, тогда

//default options need not to set
var defaultOptions = {
    attributeNamePrefix : "@_",
    attrNodeName: "@", //default is false
    textNodeName : "#text",
    ignoreAttributes : true,
    encodeHTMLchar: false,
    cdataTagName: "__cdata", //default is false
    cdataPositionChar: "\c",
    format: false, 
    indentBy: "  ",
    supressEmptyNode: false
};
var parser = new parser.j2xParser(defaultOptions);
var xml = parser.parse(json_or_js_obj);

говорится, что ‘хороший инструмент из документированной и очень известной библиотеки npm, который выполняет xml & Lt ; — & gt ; js преобразования очень хорошо: в отличие от некоторых (возможно, всех) из предложенных выше решений, он также преобразует xml комментарии.

var obj = {name: "Super", Surname: "Man", age: 23};

var builder = new xml2js.Builder();
var xml = builder.buildObject(obj);

Лучший способ сделать это, используя сторону сервера, так как сторона клиента не работает хорошо во всех сценариях. Я пытался создать онлайн-конвертер json в xml и xml в json, используя javascript, и я чувствовал себя почти невозможным, поскольку он работал не во всех сценариях. В конечном итоге я сделал это на стороне сервера, используя Newtonsoft в ASP.MVC. Вот онлайн-конвертер http://techfunda.com/Tools/XmlToJson