{"id":26566455,"url":"https://github.com/gmasson/xmlsearchjs","last_synced_at":"2026-05-19T19:31:22.548Z","repository":{"id":271170149,"uuid":"912591468","full_name":"gmasson/XMLSearchJS","owner":"gmasson","description":"Busca em Arquivos XML usando JavaScript","archived":false,"fork":false,"pushed_at":"2025-01-06T01:46:56.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-08T00:47:13.020Z","etag":null,"topics":["search-engine","search-interface","xml"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gmasson.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-06T01:37:18.000Z","updated_at":"2025-06-23T15:43:27.000Z","dependencies_parsed_at":"2025-01-06T02:41:14.449Z","dependency_job_id":"8d53bbb6-3166-4598-9430-977cf5293fcc","html_url":"https://github.com/gmasson/XMLSearchJS","commit_stats":null,"previous_names":["gmasson/xmlsearchjs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gmasson/XMLSearchJS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmasson%2FXMLSearchJS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmasson%2FXMLSearchJS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmasson%2FXMLSearchJS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmasson%2FXMLSearchJS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gmasson","download_url":"https://codeload.github.com/gmasson/XMLSearchJS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmasson%2FXMLSearchJS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33229364,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T15:49:41.270Z","status":"ssl_error","status_checked_at":"2026-05-19T15:49:22.917Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["search-engine","search-interface","xml"],"created_at":"2025-03-22T18:33:40.377Z","updated_at":"2026-05-19T19:31:22.515Z","avatar_url":"https://github.com/gmasson.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XMLSearchJS\r\n\r\nBusca em Arquivos XML usando JavaScript\r\n\r\nA classe `XMLSearch` permite realizar buscas genéricas em arquivos XML, oferecendo uma maneira flexível e configurável de processar dados. Você pode configurar a estrutura do XML, o mapeamento de campos, e personalizar a exibição e a busca. Ideal para projetos que necessitam extrair informações de arquivos XML e exibir os resultados de forma interativa.\r\n\r\n## Funcionalidades\r\n\r\n- **Carregamento e processamento de XML**: Carrega o arquivo XML e mapeia os dados conforme configurado.\r\n- **Busca flexível**: Realiza buscas em campos configuráveis com parâmetros definidos na URL.\r\n- **Exibição de resultados**: Exibe os resultados com paginação e destaque do termo de busca.\r\n- **Paginacão**: Suporta paginação automática para exibição de resultados por páginas.\r\n- **Tratamento de erros**: Permite definir ações de tratamento de erros, exibindo mensagens customizadas.\r\n\r\n## Como Usar\r\n\r\n### 1. Instalação\r\n\r\nClone o repositório ou adicione o arquivo da classe `XMLSearch` ao seu projeto.\r\n\r\n```bash\r\ngit clone https://github.com/gmasson/XMLSearchJS.git\r\n```\r\n\r\nOu adicione o arquivo `XMLSearch.js` diretamente ao seu projeto.\r\n\r\n### 2. Exemplo de Uso\r\n\r\n```javascript\r\nconst config = {\r\n  itemSelector: \"item\", // Seletor para os itens no XML\r\n  mapeamentoCampos: {\r\n    titulo: \"title\",\r\n    descricao: \"description\"\r\n  },\r\n  camposBusca: [\"titulo\", \"descricao\"], // Campos para busca\r\n  camposExibicao: [\"titulo\", \"descricao\"], // Campos a exibir\r\n  parametroBusca: \"s\", // Parâmetro URL de busca\r\n  itensPorPagina: 10, // Resultados por página\r\n  paginacao: true, // Habilitar paginação\r\n  containerResultados: \"resultados\", // ID do container de resultados\r\n  containerPaginacao: \"paginacao\", // ID do container de paginação\r\n  containerTotalResultados: \"total-resultados\", // ID do container de total de resultados\r\n};\r\n\r\nconst xmlSearch = new XMLSearch('caminho/para/o/arquivo.xml', config);\r\n```\r\n\r\n### 3. Configurações\r\n\r\nVocê pode personalizar o comportamento da busca, exibição e paginação com as seguintes configurações:\r\n\r\n- **xmlPath**: Caminho para o arquivo XML a ser carregado.\r\n- **itemSelector**: Seletor (tag ou XPath) para identificar os itens no XML (padrão: `\"item\"`).\r\n- **mapeamentoCampos**: Mapeamento dos campos do XML para as propriedades do objeto de dados.\r\n- **campoData**: Nome do campo de data (opcional).\r\n- **formatoData**: Formato da data no XML (opcional).\r\n- **camposBusca**: Campos onde a busca será realizada (array de strings).\r\n- **camposExibicao**: Campos a serem exibidos nos resultados (array de strings).\r\n- **parametroBusca**: Parâmetro da URL que define o termo de busca (padrão: `\"s\"`).\r\n- **itensPorPagina**: Número de itens a exibir por página (padrão: `10`).\r\n- **paginacao**: Habilitar ou desabilitar a paginação (padrão: `false`).\r\n- **ordenacao**: Configuração para ordenação dos resultados (opcional).\r\n- **destacarBusca**: Destacar o termo de busca nos resultados (padrão: `true`).\r\n- **onAntesDaBusca**: Função de callback a ser executada antes da busca (opcional).\r\n- **onDepoisDaBusca**: Função de callback a ser executada após a busca (opcional).\r\n- **onErro**: Função de callback para erros (opcional).\r\n- **templateItem**: Função para personalizar o template de exibição de um item (opcional).\r\n- **templateSemResultados**: Template para exibição quando não há resultados (opcional).\r\n- **templateErro**: Template para exibição de erro (opcional).\r\n\r\n### 4. Exemplo de Resultados\r\n\r\nA classe irá renderizar os resultados no container configurado (`containerResultados`), com a possibilidade de destacar o termo de busca e exibir a paginação.\r\n\r\n#### Exibição de Resultados:\r\n\r\n- **Com busca**: Os resultados serão filtrados com base no termo de busca fornecido na URL.\r\n- **Com paginação**: Os resultados serão exibidos por página, com navegação entre elas.\r\n- **Sem resultados**: Caso não haja resultados, a classe exibirá uma mensagem padrão ou customizada.\r\n\r\n### 5. Funções de Callback\r\n\r\nA classe permite definir funções de callback para ações específicas durante o processo de busca:\r\n\r\n- **onAntesDaBusca(termoBusca)**: Executado antes de realizar a busca, com o termo de busca.\r\n- **onDepoisDaBusca(resultados)**: Executado após a busca, com os resultados encontrados.\r\n- **onErro(erro)**: Executado em caso de erro durante o processamento.\r\n\r\n### 6. Personalização de Templates\r\n\r\nVocê pode personalizar os templates de exibição de resultados, sem resultados e erro usando as funções `templateItem`, `templateSemResultados` e `templateErro`. \r\n\r\n## Exemplo de Estrutura XML\r\n\r\nExemplo de um arquivo XML esperado para ser processado pela classe:\r\n\r\n```xml\r\n\u003croot\u003e\r\n  \u003citem\u003e\r\n    \u003ctitle\u003eProduto 1\u003c/title\u003e\r\n    \u003cdescription\u003eDescrição do Produto 1\u003c/description\u003e\r\n  \u003c/item\u003e\r\n  \u003citem\u003e\r\n    \u003ctitle\u003eProduto 2\u003c/title\u003e\r\n    \u003cdescription\u003eDescrição do Produto 2\u003c/description\u003e\r\n  \u003c/item\u003e\r\n\u003c/root\u003e\r\n```\r\n\r\n## Contribuindo\r\n\r\n1. Faça um fork do repositório.\r\n2. Crie uma nova branch (`git checkout -b minha-branch`).\r\n3. Faça as alterações necessárias e envie um pull request.\r\n\r\n## Licença\r\n\r\nEste projeto está licenciado sob a [MIT License](LICENSE).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgmasson%2Fxmlsearchjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgmasson%2Fxmlsearchjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgmasson%2Fxmlsearchjs/lists"}