jQuery:添加XML元素

时间:2013-08-08 13:40:56

标签: javascript jquery xml

更新
新代码给了我DOM Exception 8错误。

if($('#searchClientName').val() != '')
{
   $($.parseXML(requestXML)).find('Parameters').get(0).appendChild('<ClientName>'+$('#searchClientName').val()+'</ClientName>');
}

我也试过使用这些选项:

  1. $('<ClientName>'+$('#searchClientName').val()+'</ClientName>').appendTo($($.parseXML(requestXML)).find('RequestParameters').get(0));

  2. 它不会出现任何错误,但XML保持不变。

    xmlDoc = document.implementation.createDocument(“”,“”,null);                         clientNameElement = xmlDoc.createElement('ClientName');                         clientNameValue = xmlDoc.createTextNode($('#searchClientName')。val());                         clientNameElement.appendChild(clientNameValue); $(。$ parseXML(requestXML))找到( 'requestParameters的')得到(0).appendChild(clientNameElement);

  3. 旧代码:
    我很难用jQuery进行XML操作。 无法弄清楚如何实施评论部分:

    var requestXML = "<Request><Type>Search</Type><Parameters></Parameters></Request>",
        requestDoc = $.parseXML(requestXML),
        reqXML = $( requestDoc ),
        $parameters = $reqXML.find('Parameters');
    
        if($('#clientNameTextField').val() != '')
        {
            //Add <ClientName> name text field value</ClientName><ParameterType>ClientName</ParameterType>
        }
        else if ($('#idTextField').val() != '')
        {
            //Add <ClientId> id text field value</ClientId><ParameterType>ClientId</ParameterType>
        }
    
      

    注意:Camel外壳对于元素名称非常重要

1 个答案:

答案 0 :(得分:0)

这样可行。

更新了代码以维护节点名称的Camel Case。

var requestXML = "<Request><Type>Search</Type><Parameters></Parameters></Request>",
    $reqXML = $( jQuery.parseXML(requestXML) ),
    $parameters = $reqXML.find('Parameters');

    if($('#clientNameTextField').val() != '')
    {
        //Add <ClientName> name text field value</ClientName><ParameterType>ClientName</ParameterType>
        $parameters.append(jQuery.parseXML('<ClientName>Apple</ClientName>').documentElement);
        $parameters.append(jQuery.parseXML('<ParameterType>P999</ParameterType>').documentElement);
    }
    else if ($('#idTextField').val() != '')
    {
        //Add <ClientId> id text field value</ClientId><ParameterType>ClientId</ParameterType>
        $parameters.append(jQuery.parseXML('<ClientId>C111</ClientId>').documentElement);
        $parameters.append(jQuery.parseXML('<ParameterType>P999</ParameterType>').documentElement);
    }

    var xmlString = (new XMLSerializer()).serializeToString($reqXML.get(0));
    console.log(xmlString);