{"id":20376518,"url":"https://github.com/blakepro/xml-query-find","last_synced_at":"2025-03-04T21:41:53.182Z","repository":{"id":106246366,"uuid":"454149319","full_name":"BlakePro/xml-query-find","owner":"BlakePro","description":"Find content in Xml by dot notation and return values or array","archived":false,"fork":false,"pushed_at":"2022-10-04T22:50:32.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-15T07:12:06.616Z","etag":null,"topics":["dotnotation","javascript","nodejs","npm-package","xml","xml-parser"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@blakepro/xml-query-find","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BlakePro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-01-31T19:54:38.000Z","updated_at":"2024-08-12T16:45:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"2bbbd2ec-eb31-4edd-8229-ec2189fceeb4","html_url":"https://github.com/BlakePro/xml-query-find","commit_stats":{"total_commits":15,"total_committers":1,"mean_commits":15.0,"dds":0.0,"last_synced_commit":"4ef2212ed3b1d2f8aaea0fc04ed2846ccef34511"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlakePro%2Fxml-query-find","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlakePro%2Fxml-query-find/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlakePro%2Fxml-query-find/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlakePro%2Fxml-query-find/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BlakePro","download_url":"https://codeload.github.com/BlakePro/xml-query-find/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241928529,"owners_count":20043820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["dotnotation","javascript","nodejs","npm-package","xml","xml-parser"],"created_at":"2024-11-15T01:38:15.174Z","updated_at":"2025-03-04T21:41:53.163Z","avatar_url":"https://github.com/BlakePro.png","language":null,"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/BlakePro\"\u003e\n    \u003cimg src=\"xml-query-find-2.png\" alt=\"Xml query find dot notation\" width=\"400\" height=\"200\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nFind content in Xml by dot notation and return values or array\n\n## 👉🏻 Features\n  * Easy parsing by dot\n  * Find in arrays\n  * Typed results\n  * Include functions\n\n\n## 👉🏻 Installation\nThis is a [Node.js](https://nodejs.org/en/) module available through the\n[npm registry](https://www.npmjs.com/).\n\n##### Npm\n```bash\nnpm i @blakepro/xml-query-find\n```\n\n##### Yarn\n```bash\nyarn add @blakepro/xml-query-find\n```\n\n## 💥 Typed and functions\n|Type|Function|Parameter|Parameter|\n|-|-|-|-|\n|number||||\n|string||||\n|string|upper|||\n|string|lower||\n|string|capitalize||\n|string|replace|find|replace|\n|string|substring|start|end|\n|array||||\n|array|number|||\n|array|count|||\n|array|sum|||\n|array|average|||\n|array|upper|||\n|array|lower||\n|array|capitalize||\n|array|replace|find|replace|\n|array|substring|start|end|\n|array|substring_upper|start|end|\n|array|substring_lower|start|end|\n\n## 👉🏻 Usage\n```js\nconst { _json, _query } = require('@blakepro/xml-query-find');\n```\n\n## 👨🏻‍💻 👩🏼‍💻 Example\n```js\nconst { _json, _query } = require('@blakepro/xml-query-find');\n\nlet xml = `\u003cnote\u003e\n  \u003cto\u003eLove tech\u003c/to\u003e\n  \u003cfrom\u003eCristian\u003c/from\u003e\n  \u003cheading\u003eXML Query Find\u003c/heading\u003e\n  \u003cbody\u003eAlways use superpowers!\u003c/body\u003e\n  \u003cnumbers\u003e\n    \u003cnumber\u003e1\u003c/number\u003e\n    \u003cnumber\u003e5\u003c/number\u003e\n    \u003cnumber\u003e7\u003c/number\u003e\n  \u003c/numbers\u003e\n  \u003cmy-contacts\u003e\n    \u003ccontact type=\"friend\" name=\"blake Pro\" phone=\"123-567-890\"\u003e\u003c/contact\u003e\n    \u003ccontact type=\"boss\" name=\"mrs vane\" phone=\"27.57.96.4\"\u003e\u003c/contact\u003e\n    \u003ccontact type=\"mom\" name=\"Sandy\" phone=\"55:101:797:26\"\u003e\u003c/contact\u003e\n  \u003c/my-contacts\u003e\n\u003c/note\u003e`\n\nlet remove = ['my-']\n\nlet extract = {\n  to: {\n    query: ['note.to._attr'],\n    type: 'string'\n  },\n  to_upper: {\n    query: ['note.to._attr'],\n    type: 'string',\n    function: 'upper'\n  },\n  to_lower: {\n    query: ['note.to._attr'],\n    type: 'string',\n    function: 'lower'\n  },\n  to_replace: {\n    query: ['note.to._attr'],\n    type: 'string',\n    function: 'replace',\n    find: 't',\n    replace: '@'\n  },\n  to_substring: {\n    query: ['note.to._attr'],\n    type: 'string',\n    function: 'substring',\n    start: 0,\n    end: 1\n  },\n  to_substring_upper: {\n    query: ['note.to._attr'],\n    type: 'string',\n    function: 'substring_upper',\n    start: 0,\n    end: 1\n  },\n  to_capitalize: {\n    query: ['note.to._attr'],\n    type: 'string',\n    function: 'capitalize'\n  },\n  numbers: {\n    query: ['note.numbers.number._find._attr'],\n    type: 'array'\n  },\n  numbers_to_number: {\n    query: ['note.numbers.number._find._attr'],\n    type: 'array',\n    function: 'number'\n  },\n  numbers_count: {\n    query: ['note.numbers.number._find._attr'],\n    type: 'array',\n    function: 'count'\n  },\n  numbers_sum: {\n    query: ['note.numbers.number._find._attr'],\n    type: 'array',\n    function: 'sum'\n  },\n  numbers_average: {\n    query: ['note.numbers.number._find._attr'],\n    type: 'array',\n    function: 'average'\n  },\n  type: {\n    query: ['note.contacts.contact._find._attr.type'],\n    type: 'array',\n  },\n  names: {\n    query: ['note.contacts.contact._find._attr.name'],\n    type: 'array',\n  },\n  names_upper: {\n    query: ['note.contacts.contact._find._attr.name'],\n    type: 'array',\n    function: 'upper'\n  },\n  names_capitalized: {\n    query: ['note.contacts.contact._find._attr.name'],\n    type: 'array',\n    function: 'capitalize'\n  },\n  names_substring: {\n    query: ['note.contacts.contact._find._attr.name'],\n    type: 'array',\n    function: 'substring',\n    start: 0,\n    end: 3\n  },\n  names_substring_upper: {\n    query: ['note.contacts.contact._find._attr.name'],\n    type: 'array',\n    function: 'substring_upper',\n    start: 0,\n    end: 2\n  },\n  phone: {\n    query: ['note.contacts.contact._find._attr.phone'],\n    type: 'array',\n    function: 'capitalize'\n  },\n  phone_replace: {\n    query: ['note.contacts.contact._find._attr.phone'],\n    type: 'array',\n    function: 'replace',\n    find: '[.:-]',\n    replace: ' '\n  }\n}\n\nlet json = _json(xml, remove)\nconsole.log(json)\n\nlet data = _query(json, extract)\nconsole.log(data)\n```\n\n## 😎 Results\n```js\n{\n  to: 'Love tech',\n  to_upper: 'LOVE TECH',\n  to_lower: 'love tech',\n  to_replace: 'Love @ech',\n  to_substring: 'L',\n  to_substring_upper: 'L',\n  to_capitalize: 'Love Tech',\n  numbers: [ '1', '5', '7' ],\n  numbers_to_number: [ 1, 5, 7 ],\n  numbers_count: 3,\n  numbers_sum: 13,\n  numbers_average: 4.333333333333333,\n  type: [ 'friend', 'boss', 'mom' ],\n  names: [ 'blake Pro', 'mrs vane', 'Sandy' ],\n  names_upper: [ 'BLAKE PRO', 'MRS VANE', 'SANDY' ],\n  names_capitalized: [ 'Blake Pro', 'Mrs Vane', 'Sandy' ],\n  names_substring: [ 'bla', 'mrs', 'San' ],\n  names_substring_upper: [ 'BL', 'MR', 'SA' ],\n  phone: [ '123-567-890', '27.57.96.4', '55:101:797:26' ],\n  phone_replace: [ '123 567 890', '27 57 96 4', '55 101 797 26' ]\n}\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cbr/\u003e\n  \u003ca href=\"https://www.buymeacoffee.com/BlakePro\"\u003e\n  \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" width=\"280\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n","funding_links":["https://www.buymeacoffee.com/BlakePro"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblakepro%2Fxml-query-find","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblakepro%2Fxml-query-find","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblakepro%2Fxml-query-find/lists"}