« Posts tagged jabber/xmpp

Implement prettyPrintXML javascript function wrap on rawInput/rawOutput StropheJS API

Before :
Before

After using :
After

Code :

JavaScript
prettyPrintXML = function(data){
    var formatted = '';
    var reg = /(>)(<)(\/*)/g;
    data = data.replace(reg, '$1\r\n$2$3');
    var pad = 0;
    jQuery.each(data.split('\r\n'), function(index, node) {
      var indent = 0;
      try {
        if (node.match(/^<BINVAL>/)) {
          node = '<BINVAL>{binary data}</BINVAL>';
          indent = 0;
        } else if (node.match(/^<password>/)) {
          node = '<password>{hidden}</password>';
          indent = 0;
        } else if (node.match( /.+<\/\w[^>]*>$/ ) || node.match(/^<\w[^>].+\/>/)) {
          indent = 0;
        } else if (node.match( /^<\/\w/ )) {
          if (pad != 0) {
            pad -= 1;
          }
        } else if (node.match( /^<\w[^>]*[^\/]>.*$/ ) || node.match(/^<\w[^>]*>/)) {
          indent = 1;
        } else {
          indent = 0;
        }
 
        var padding = '';
        for (var i = 0; i < pad; i++) {
          padding += '\t';
        }
 
        formatted += padding + node + '\r\n';
        pad += indent;
      } catch(e) {
        return data;
      }
      return true;
    });
    return formatted;    
};