Form 表单的 XML 化(Javascript)

如何从一个 HTML 表单生成对应的 XML 呢?在我们为应用程序创建一个简单的 Web 服务接口的时候可能会用到它,来看看这个函数:

/*设置一个命名空间防止冲突*/
if  ( typeof  jscript == 'undefined' ) {
   jscript = function () { }
}
jscript.form = function () { }
 
/**
  * This function takes an HTML form and constructs an XML document from it,
  * using the specified root element.
  *(这个函数把 HTML 表单中的信息转换为 XML document)
  * @param  inForm        A reference ot the HTML form object to serialize.
  * @param  inRootElement The root element the XML dccument should use.
  * @return               A string of XML constructed from serializing the
  *                       specified form.(此参数为 XML document 的根元素)
  */
jscript.form.formToXML = function (inForm, inRootElement) {
 
   if  (inForm == null ) {
     return  null ;
   }
   if  (inRootElement == null ) {
     return  null ;
   }
   var  outXML = "<"  + inRootElement + ">" ;
   var  i; /*开始处理*/
   for  (i = 0; i < inForm.length; i++) {
     var  ofe = inForm[i];
     var  ofeType = ofe.type.toUpperCase();
     var  ofeName = ofe.name;
     var  ofeValue = ofe.value;
     /*处理不同的 input 框及 select 和 textarea,"SELECT-ONE" 为单选模式*/
     if  (ofeType == "TEXT"  || ofeType == "HIDDEN"  ||
       ofeType == "PASSWORD"  || ofeType == "SELECT-ONE"  ||
       ofeType == "TEXTAREA" ) {
       outXML += "<"  + ofeName + ">"  + ofeValue + "</"  + ofeName + ">"
     }
     /*处理 select 的多选(multiple)模式*/
     if (ofeType == "SELECT-MULTIPLE" ){
         outXML += "<"  + ofeName + ">" ;
         for (j = 0; j < ofe.options.length; j ++){
             outXML += "<option"  + (j + 1) + ">" ;
             outXML += "<text>"  + ofe.options[j].innerHTML + "</text>" ;
             outXML += "<value>"  + ofe.options[j].value + "</value>" ;
             outXML += "</option"  + (j + 1) + ">" ;
         }
         outXML += "</"  + ofeName + ">" ;
     }
     /*处理单选框(radio)*/
     if  (ofeType == "RADIO"  && ofe.checked == true ) {
       outXML += "<"  + ofeName + ">"  + ofeValue + "</"  + ofeName + ">"
     }
     /*处理多选框*/
     if  (ofeType == "CHECKBOX" ) {
       if  (ofe.checked == true ) {
         cbval = "true" ;
       } else  {
         cbval = "false" ;
       }
       outXML = outXML + "<"  + ofeName + ">"  + cbval + "</"  + ofeName + ">"
 
     }
     outXML += "" ;
   }
   outXML += "</"  + inRootElement + ">" ;
   return  outXML;
 
} // End formToXML().

来看一个表单,试试这个函数的效果:

< form  id="testForm">
     < input  type="text" name="firstName" value="Jack">< br >
     < input  type="text" name="lastName" value="Redd">< br >
     < select  multiple id="numComputers" name="numComputers">
       < option  value="1">I own one computer</ option >
       < option  value="2">I own two computers</ option >
       < option  value="2+">I own two or more computers</ option >
     </ select >
</ form >

通过表单元素来调用函数:

jscript.form.formToXML(document.getElementById( 'testForm' ), 'Person' )

来看看它的处理结果:

< Person >
     < firstName >Jack</ firstName >
     < lastName >Redd</ lastName >
     < numComputers >
         < option1 >
             < text >I own one computer</ text >
             < value >1</ value >
         </ option1 >
         < option2 >
             < text >I own two computers</ text >
             < value >2</ value >
         </ option2 >
         < option3 >
             < text >I own two or more computers</ text >
             < value >2+</ value >
         </ option3 >
     </ numComputers >
</ Person >

具体生成什么格式的 XML 信息要看应用程序的要求,然后通过修改函数来达到目的,这只是一个示例。:->

转载于:https://www.cnblogs.com/jin-talk/p/5648810.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值