Jquery - 从XML搜索中删除特殊字符

时间:2018-01-04 11:39:48

标签: javascript jquery xml

我有这个简单的javascript代码,用于搜索xml属性中的特定字符串。它已经不区分大小写,所以如果我搜索字符串“Técnico”“técnico”,它会返回相同的结果。

但是我想搜索没有特殊字符,所以如果我使用“Tecnico”“tecnico”而不是“Técnico”它应该返回相同的结果。请你帮助我好吗?以下是我正在使用的代码。

if(readCookie('googtrans')=='/pt/pt')

修改

仍然没有工作,事实上,之前的搜索停止工作,我不得不回滚那个开发。但我仍然留下了我所做的一个例子。正如您在accent_fold()中看到的那样,我使用var accentMap = { 'á':'a', 'é':'e', 'í':'i','ó':'o','ú':'u'}; function accent_fold(s){ if (!s) { return ''; } var ret = ''; for (var i = 0; i < s.length; i++) { if(!accentMap[s.charAt(i)]) ret += s.charAt(i); else ret += accentMap[s.charAt(i)]; } return ret; } function pesquisa() { $("#profissao").empty(); xmlDoc = $.parseXML(xml); var resultado; $xml = $(xmlDoc); var texto = $("#pesq_profissao").val(); if (texto.length > 2) { if( readCookie('googtrans')=='/pt/pt'){ var valor = $(xml).find('profissao').filter(function() { var returns = accent_fold(($(this).attr('codigo') || '').toLowerCase().indexOf(texto.toLowerCase()) > -1); return returns }); resultado = valor; }else if(readCookie('googtrans')== null) { var valor = $(xml).find('profissao').filter(function() { return ($(this).attr('codigo') || '').toLowerCase().indexOf(texto.toLowerCase()) > -1; }); resultado = valor; }else if(readCookie('googtrans')=='/pt/en') { var valor = $(xml).find('profissao').filter(function() { return ($(this).attr('codigo') || '').toLowerCase().indexOf(texto.toLowerCase()) > -1; }); resultado = valor; }else { var valor = $(xml).find('profissao').filter(function() { return ($(this).attr('codigo') || '').toLowerCase().indexOf(texto.toLowerCase()) > -1; }); resultado = valor; } $.each(resultado, function (index, value) { jQuery.fn.reverse = [].reverse; $parents = $(value).parents().reverse(); var new_node = new node($(value)); // caminho ate a raiz $.each($parents, function (index, value) { var div = document.createElement('div'); var li = document.createElement('li'); $(li).append($(value).attr("descricao")); $(div).addClass("cae_open"); $(div).append(li); $("#profissao").append(div); }); // no folha var div = document.createElement('div'); var a = document.createElement('li'); $(a).append($(value).attr("descricao")); $(a).addClass("transbox"); $(div).addClass("cae_sel"); $(div).append(a); link = document.createElement('a'); Sigla = document.createTextNode(new_node.Sigla); link.appendChild(Sigla); $(link).attr("href", new_node.url); $(link).attr('target', '_blank'); a.appendChild(link); $(div).click(function () { parametersValue = jQuery.makeArray($(value).attr("codigo")); FinalizaPesquisa(); }); $("#profissao").append(div); }); if (resultado.length == 0) { var span = document.createElement('span'); $(span).append("Não existem resultados para a sua pesquisa."); $("#profissao").append(span); } } else { buildTree(root); } } 函数,但我无法使其工作,在chrome控制台中没有显示任何错误,但在调试之后,我看到搜索是没有返回它想要返回的值。你们能帮我一次吗?

哦,我说服老人允许我发布整个搜索功能,功能名称是葡萄牙语,所以函数 pequisa 表示函数 search 。所以这就是它。

[
    {
        object: 'list',
        data: 
        [
        {
            id: 'cust1',
            object: 'customer',
            account_balance: 0,
            created: 1514549772,
            currency: 'usd',
            description: 'CustomerName1',
            discount: null,
            email: null,
            subscriptions: {
                object: 'list',
                data: [],
                has_more: false,
                total_count: 0,
                url: '/v1/customers/cust1/subscriptions'
            }
        },
        {
            id: 'cust2',
            object: 'customer',
            account_balance: 0,
            created: 1514549772,
            currency: 'usd',
            description: 'CustomerName2',
            discount: null,
            email: null,
            subscriptions: {
                object: 'list',
                data: [],
                has_more: false,
                total_count: 0,
                url: '/v1/customers/cust2/subscriptions'
            }
        },
        ],
        has_more: false,
        url: "/v1/customers"
    }
]

1 个答案:

答案 0 :(得分:1)

您可以查看here。它有你想要的。

编辑Xml解析并添加示例 js

&#13;
&#13;
var parser, xmlDoc;
var text = "<bookstore><book>" +
"<title>Evérydáy Italían</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";

if (window.DOMParser) {
  parser = new DOMParser();
  xmlDoc = parser.parseFromString(text,"text/xml");
} else {
  xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async = false;
  xmlDoc.loadXML(text); 
} 

var accentMap = {
  'á':'a', 'é':'e', 'í':'i','ó':'o','ú':'u'
};

document.write(accent_fold(xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue));

function accent_fold(s){
  if (!s) { return ''; }
  var ret = '';
  for (var i = 0; i < s.length; i++) {
  	if(!accentMap[s.charAt(i)])
     	    ret += s.charAt(i);
         else
    	    ret += accentMap[s.charAt(i)];
  }
  return ret;
}
&#13;
&#13;
&#13;