fckxml.js
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:2k
源码类别:

数据库编程

开发平台:

Visual C++

  1. /*
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2007 Frederico Caldeira Knabben
  4.  *
  5.  * == BEGIN LICENSE ==
  6.  *
  7.  * Licensed under the terms of any of the following licenses at your
  8.  * choice:
  9.  *
  10.  *  - GNU General Public License Version 2 or later (the "GPL")
  11.  *    http://www.gnu.org/licenses/gpl.html
  12.  *
  13.  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  14.  *    http://www.gnu.org/licenses/lgpl.html
  15.  *
  16.  *  - Mozilla Public License Version 1.1 or later (the "MPL")
  17.  *    http://www.mozilla.org/MPL/MPL-1.1.html
  18.  *
  19.  * == END LICENSE ==
  20.  *
  21.  * FCKXml Class: class to load and manipulate XML files.
  22.  * (IE specific implementation)
  23.  */
  24. var FCKXml = function()
  25. {
  26. this.Error = false ;
  27. }
  28. FCKXml.GetAttribute = function( node, attName, defaultValue )
  29. {
  30. var attNode = node.attributes.getNamedItem( attName ) ;
  31. return attNode ? attNode.value : defaultValue ;
  32. }
  33. /**
  34.  * Transforms a XML element node in a JavaScript object. Attributes defined for
  35.  * the element will be available as properties, as long as child  element
  36.  * nodes, but the later will generate arrays with property names prefixed with "$".
  37.  *
  38.  * For example, the following XML element:
  39.  *
  40.  * <SomeNode name="Test" key="2">
  41.  * <MyChild id="10">
  42.  * <OtherLevel name="Level 3" />
  43.  * </MyChild>
  44.  * <MyChild id="25" />
  45.  * <AnotherChild price="499" />
  46.  * </SomeNode>
  47.  *
  48.  * ... results in the following object:
  49.  *
  50.  * {
  51.  * name : "Test",
  52.  * key : "2",
  53.  * $MyChild :
  54.  * [
  55.  * {
  56.  * id : "10",
  57.  * $OtherLevel :
  58.  * {
  59.  * name : "Level 3"
  60.  * }
  61.  * },
  62.  * {
  63.  * id : "25"
  64.  * }
  65.  * ],
  66.  * $AnotherChild :
  67.  * [
  68.  * {
  69.  * price : "499"
  70.  * }
  71.  * ]
  72.  * }
  73.  */
  74. FCKXml.TransformToObject = function( element )
  75. {
  76. if ( !element )
  77. return null ;
  78. var obj = {} ;
  79. var attributes = element.attributes ;
  80. for ( var i = 0 ; i < attributes.length ; i++ )
  81. {
  82. var att = attributes[i] ;
  83. obj[ att.name ] = att.value ;
  84. }
  85. var childNodes = element.childNodes ;
  86. for ( i = 0 ; i < childNodes.length ; i++ )
  87. {
  88. var child = childNodes[i] ;
  89. if ( child.nodeType == 1 )
  90. {
  91. var childName = '$' + child.nodeName ;
  92. var childList = obj[ childName ] ;
  93. if ( !childList )
  94. childList = obj[ childName ] = [] ;
  95. childList.push( this.TransformToObject( child ) ) ;
  96. }
  97. }
  98. return obj ;
  99. }