【问题标题】:jquery .append() case sensitive elementjquery .append() 区分大小写的元素
【发布时间】:2015-04-08 17:23:12
【问题描述】:

您好,我需要从表单中的数据创建 xml 以将其发送到 Web 服务。问题是.append() 不区分大小写,所以.append('<EDO />') 将创建<edo>。但是xml是区分大小写的,那么有没有办法解决这个问题呢?而且我选择使用 domObject 而不是 string,因为这样我就不必编写 endtags,这在我的场景中会非常困难。

【问题讨论】:

    标签: jquery append case-sensitive


    【解决方案1】:

    尝试使用$.parseXML() 创建 XML 元素:

    yourObject.append($.parseXML("<EDO />").documentElement);
    

    【讨论】:

    • 谢谢,这似乎可行,但我遇到了另一个问题。我已经创建了元素 var domA = $.parseXML("&lt;EDO_A /&gt;").documentElement; 并且添加这样的子元素没有问题 $(domA ).append($.parseXML('&lt;EDO_Child /&gt;').documentElement); 但是当我有另一个对象例如 var domB = $.parseXML("&lt;EDO_B /&gt;").documentElement; 我不知道如何将它添加到 domA 。我试过$(domA ).append(domB);$(domA ).append($.parseXML(serializer.serializeToString(domB);).documentElement); 其中serializervar serializer = new XMLSerializer(); 但它不起作用
    • @david,当您尝试$(domA).append(domB) 时收到什么错误消息?
    • 对不起,我犯了一个错误,而不是 $.parseXML,我只有 $.,而不是 domA 是坏对象,它没有工作。现在$(domA).append(domB) 可以完美运行,我发现domA.appendChild(domB) 也可以。唯一的问题是什么更快
    • @david, appendChild() 可能更快,因为append() 是根据appendChild() 实现的。不过,测量永远不会有坏处:)
    【解决方案2】:

    最后正如@Frédéric Hamidi 所说,为了使xml 区分大小写,我使用了这些函数:

    var domA = $.parseXML("&lt;EDO_A /&gt;").documentElement; 创建元素

    $(domA ).append($.parseXML('&lt;EDO_Child /&gt;').documentElement); 从字符串中添加子项

    $(domA).append(domB)domA.appendChild(domB) 添加子对象

    【讨论】:

      【解决方案3】:

      jQuery.parseXML 总是会创建一个新的DOMParse 和一个新的Document,所以它很重。

      更好的方法是使用(不直观的)parseHTML,使用context 参数:

      // Create the context XML document; doc and $doc is reusable
      var doc = (new DOMParser()).parseFromString( '<root/>', 'text/xml' ); 
      var $doc = $( doc.documentElement )
      
      // Create case-sensitive XML element;
      // this will call doc.createElement( 'EDO' ), as of jQuery 2.1.3
      $doc.append( $.parseHTML( '<EDO />', doc ) ); 
      

      【讨论】:

        【解决方案4】:

        注意事项:

        $.parseHTML("<AddPerson>Adel</AddPerson>"); //result: <addperson>Adel</addperson>
        
        $.parseXML("<AddPerson>Adel</AddPerson>"); //result: <AddPerson xmlns="">Adel</AddPerson>
        

        我猜你需要这些行:

        var request = $.parseXML(HtmlOrXmlStringSource);
        $(request).find(someElementInside).append(HtmlOrXmlStringSource_2);
        
        //Serialize XML
        var oSerializer = new XMLSerializer();
        request = oSerializer.serializeToString(request);
        request = request.replace(new RegExp(' xmlns=""', "igm"), "");
        

        现在可以通过 $.ajax() 发送请求了;

        谢谢

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-24
          • 1970-01-01
          • 1970-01-01
          • 2011-08-27
          • 2013-12-13
          • 2023-03-20
          • 1970-01-01
          相关资源
          最近更新 更多