Guest User

Untitled

a guest
May 29th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. function toJSON(node) {
  2. node = node || this;
  3. var obj = {
  4. nodeType: node.nodeType
  5. };
  6. if (node.tagName) {
  7. obj.tagName = node.tagName.toLowerCase();
  8. } else
  9. if (node.nodeName) {
  10. obj.nodeName = node.nodeName;
  11. }
  12. if (node.nodeValue) {
  13. obj.nodeValue = node.nodeValue;
  14. }
  15. var attrs = node.attributes;
  16. if (attrs) {
  17. var length = attrs.length;
  18. var arr = obj.attributes = new Array(length);
  19. for (var i = 0; i < length; i++) {
  20. attr = attrs[i];
  21. arr[i] = [attr.nodeName, attr.nodeValue];
  22. }
  23. }
  24. var childNodes = node.childNodes;
  25. if (childNodes) {
  26. length = childNodes.length;
  27. arr = obj.childNodes = new Array(length);
  28. for (i = 0; i < length; i++) {
  29. arr[i] = toJSON(childNodes[i]);
  30. }
  31. }
  32. return obj;
  33. }
  34.  
  35. function toDOM(obj) {
  36. if (typeof obj == 'string') {
  37. obj = JSON.parse(obj);
  38. }
  39. var node, nodeType = obj.nodeType;
  40. switch (nodeType) {
  41. case 1: //ELEMENT_NODE
  42. node = document.createElement(obj.tagName);
  43. var attributes = obj.attributes || [];
  44. for (var i = 0, len = attributes.length; i < len; i++) {
  45. var attr = attributes[i];
  46. node.setAttribute(attr[0], attr[1]);
  47. }
  48. break;
  49. case 3: //TEXT_NODE
  50. node = document.createTextNode(obj.nodeValue);
  51. break;
  52. case 8: //COMMENT_NODE
  53. node = document.createComment(obj.nodeValue);
  54. break;
  55. case 9: //DOCUMENT_NODE
  56. node = document.implementation.createDocument();
  57. break;
  58. case 10: //DOCUMENT_TYPE_NODE
  59. node = document.implementation.createDocumentType(obj.nodeName);
  60. break;
  61. case 11: //DOCUMENT_FRAGMENT_NODE
  62. node = document.createDocumentFragment();
  63. break;
  64. default:
  65. return node;
  66. }
  67. if (nodeType == 1 || nodeType == 11) {
  68. var childNodes = obj.childNodes || [];
  69. for (i = 0, len = childNodes.length; i < len; i++) {
  70. node.appendChild(toDOM(childNodes[i]));
  71. }
  72. }
  73. return node;
  74. }
Add Comment
Please, Sign In to add comment