{"id":3161,"date":"2026-09-05T06:06:14","date_gmt":"2026-09-05T06:06:14","guid":{"rendered":"https:\/\/digitalbridgehub.com\/acrossysdigital\/?page_id=3161"},"modified":"2026-09-09T08:16:20","modified_gmt":"2026-09-09T08:16:20","slug":"sitemap-visualizer","status":"publish","type":"page","link":"https:\/\/digitalbridgehub.com\/acrossysdigital\/tools\/sitemap-visualizer\/","title":{"rendered":"Sitemap Visualizer"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3161\" class=\"elementor elementor-3161\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-806d45c e-flex e-con-boxed qodef-elementor-content-no e-con e-parent\" data-id=\"806d45c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7ae1e90 elementor-widget elementor-widget-shortcode\" data-id=\"7ae1e90\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\r\n<div class=\"aitool-wrapper\">\r\n    <div class=\"aitool-header\">\r\n        <h2>XML Sitemap Visualizer<\/h2>\r\n        <p>Parse, explore, and audit sitemap architecture through interactive folder and tabular views<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"aitool-body\">\r\n        <div class=\"aitool-input-area\">\r\n            <div class=\"aitool-row\">\r\n                <label for=\"sv-sitemap-url\">Target Sitemap URL *<\/label>\r\n                <div class=\"serp-fetch-row\">\r\n                    <input type=\"url\" id=\"sv-sitemap-url\" placeholder=\"https:\/\/example.com\/sitemap.xml\" value=\"https:\/\/digitalbridgehub.com\/acrossysdigital\/sitemap_index.xml\">\r\n                    <button type=\"button\" id=\"sv-load-btn\" class=\"aitool-btn aitool-btn-primary serp-fetch-btn\">Parse Sitemap<\/button>\r\n                    <button type=\"button\" id=\"sv-clear-btn\" class=\"aitool-btn aitool-btn-secondary\">Clear<\/button>\r\n                <\/div>\r\n                <div class=\"aitool-row-hint\">Supports single sitemaps (urlset) and sitemap indexes (sitemapindex)<\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Summary Statistics -->\r\n        <div id=\"sv-stats\" class=\"aitool-card\" style=\"display: none; margin-bottom: 25px;\">\r\n            <div class=\"aitool-card-header\">\r\n                <span class=\"aitool-card-title\">Sitemap Diagnostics<\/span>\r\n                <span class=\"aitool-card-badge\" id=\"sv-status-badge\">Loaded<\/span>\r\n            <\/div>\r\n            <div class=\"aitool-card-body\">\r\n                <div class=\"aitool-metric-grid\">\r\n                    <div class=\"aitool-metric-card highlight\">\r\n                        <div class=\"aitool-mc-label\">Indexed Entries<\/div>\r\n                        <div class=\"aitool-mc-val\" id=\"sv-total-urls\">0<\/div>\r\n                    <\/div>\r\n                    <div class=\"aitool-metric-card\">\r\n                        <div class=\"aitool-mc-label\">Document Structure<\/div>\r\n                        <div class=\"aitool-mc-val\" id=\"sv-sitemap-type\" style=\"font-size: 16px;\">-<\/div>\r\n                    <\/div>\r\n                    <div class=\"aitool-metric-card\">\r\n                        <div class=\"aitool-mc-label\">Last Timestamp<\/div>\r\n                        <div class=\"aitool-mc-val\" id=\"sv-last-modified\" style=\"font-size: 15px;\">-<\/div>\r\n                    <\/div>\r\n                    <div class=\"aitool-metric-card\">\r\n                        <div class=\"aitool-mc-label\">Target Host<\/div>\r\n                        <div class=\"aitool-mc-val\" id=\"sv-target-host\" style=\"font-size: 15px;\">-<\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Results Stream Area -->\r\n        <div id=\"sv-result\">\r\n            <div class=\"aitool-card-highlight\" style=\"margin-bottom: 0;\">\r\n                <div class=\"aitool-card-highlight-label\">Awaiting Input<\/div>\r\n                <div class=\"aitool-card-content\" style=\"color: var(--BodyTxtColor);\">\r\n                    Enter an XML sitemap URL and select Parse Sitemap to analyze the URL directory tree.\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"aitool-info-box\" style=\"margin-top: 25px;\">\r\n            <strong>XML Sitemap Guidelines:<\/strong>\r\n            <ul style=\"margin: 10px 0 0 20px; line-height: 1.7;\">\r\n                <li>Sitemaps must not exceed <strong>50,000 URLs<\/strong> or 50MB uncompressed per file. Larger sites should implement a parent sitemap index.<\/li>\r\n                <li>Ensure all URLs are canonical, return an HTTP 200 status code, and match your site's protocol and trailing slash configuration.<\/li>\r\n                <li>Search engines prioritize clean hierarchy and consistent <code>&lt;lastmod&gt;<\/code> timestamps over arbitrary priority tags.<\/li>\r\n            <\/ul>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\njQuery(document).ready(function ($) {\r\n    var ajaxUrl = 'https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-admin\/admin-ajax.php';\r\n    var nonce   = '7415cfe8d5';\r\n\r\n    var $urlInput      = $('#sv-sitemap-url');\r\n    var $loadBtn       = $('#sv-load-btn');\r\n    var $clearBtn      = $('#sv-clear-btn');\r\n\r\n    var $statsCard     = $('#sv-stats');\r\n    var $totalUrls     = $('#sv-total-urls');\r\n    var $sitemapType   = $('#sv-sitemap-type');\r\n    var $lastMod       = $('#sv-last-modified');\r\n    var $targetHost    = $('#sv-target-host');\r\n    var $statusBadge   = $('#sv-status-badge');\r\n    var $resultArea    = $('#sv-result');\r\n\r\n    function escapeHtml(text) {\r\n        if (!text) return '';\r\n        return String(text).replace(\/&\/g, '&amp;').replace(\/<\/g, '&lt;')\r\n                           .replace(\/>\/g, '&gt;').replace(\/\"\/g, '&quot;').replace(\/'\/g, '&#39;');\r\n    }\r\n\r\n    function formatDate(dateString) {\r\n        if (!dateString) return '-';\r\n        var date = new Date(dateString);\r\n        if (isNaN(date.getTime())) return escapeHtml(dateString);\r\n        return date.toLocaleDateString() + ' ' + date.toLocaleTimeString();\r\n    }\r\n\r\n    function getDomainFromUrl(url) {\r\n        try {\r\n            var urlObj = new URL(url);\r\n            return urlObj.hostname;\r\n        } catch (e) {\r\n            return '';\r\n        }\r\n    }\r\n\r\n    function buildTree(urls) {\r\n        var tree = {};\r\n        urls.forEach(function (url) {\r\n            var parts = url.replace(\/^https?:\\\/\\\/\/, '').split('\/');\r\n            var current = tree;\r\n\r\n            for (var i = 0; i < parts.length; i++) {\r\n                var part = parts[i];\r\n                if (!current[part]) {\r\n                    current[part] = {};\r\n                }\r\n                current = current[part];\r\n            }\r\n            current._isUrl = true;\r\n            current._url = url;\r\n        });\r\n        return tree;\r\n    }\r\n\r\n    function countUrlsInNode(node) {\r\n        var count = 0;\r\n        for (var key in node) {\r\n            if (key === '_isUrl') {\r\n                count++;\r\n            } else if (key !== '_url' && !key.startsWith('_') && typeof node[key] === 'object') {\r\n                count += countUrlsInNode(node[key]);\r\n            }\r\n        }\r\n        return count;\r\n    }\r\n\r\n    function renderTree(tree, level, parentKey) {\r\n        var html = '<ul style=\"list-style: none; margin: 0; padding-left: ' + (level === 0 ? '0' : '20px') + '; font-family: monospace; font-size: 13px; line-height: 1.8;\">';\r\n        var keys = Object.keys(tree).filter(function (k) {\r\n            return k !== '_isUrl' && k !== '_url' && !k.startsWith('_');\r\n        }).sort();\r\n\r\n        for (var i = 0; i < keys.length; i++) {\r\n            var key = keys[i];\r\n            var node = tree[key];\r\n            var hasChildren = Object.keys(node).filter(function (k) {\r\n                return k !== '_isUrl' && k !== '_url' && !k.startsWith('_');\r\n            }).length > 0;\r\n\r\n            html += '<li style=\"position: relative; padding: 2px 0;\">';\r\n\r\n            if (hasChildren) {\r\n                html += '<div class=\"sv-tree-folder\" style=\"color: var(--AccentTxtColor); font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 6px;\">';\r\n                html += '<span class=\"sv-tree-toggle\" data-expanded=\"false\" style=\"color: var(--PrimaryColor); cursor: pointer; user-select: none; width: 16px;\">+<\/span>';\r\n                html += '<span>\/' + escapeHtml(key) + '<\/span>';\r\n                html += '<span class=\"aitool-card-badge\" style=\"font-size: 10px; padding: 1px 6px; font-weight: normal;\">' + countUrlsInNode(node) + ' URL' + (countUrlsInNode(node) !== 1 ? 's' : '') + '<\/span>';\r\n                html += '<\/div>';\r\n                html += '<div class=\"sv-tree-children\" style=\"display: none;\">';\r\n                html += renderTree(node, level + 1, key);\r\n                html += '<\/div>';\r\n            } else if (node._isUrl) {\r\n                html += '<div class=\"sv-tree-url\" style=\"display: flex; align-items: center; gap: 6px; padding-left: 20px;\">';\r\n                html += '<a href=\"' + escapeHtml(node._url) + '\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: var(--PrimaryColor); text-decoration: none; word-break: break-all;\">' + escapeHtml(key || '\/') + '<\/a>';\r\n                html += '<\/div>';\r\n            } else {\r\n                html += '<div class=\"sv-tree-folder\" style=\"color: var(--AccentTxtColor); font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 6px;\">';\r\n                html += '<span class=\"sv-tree-toggle\" data-expanded=\"false\" style=\"color: var(--PrimaryColor); cursor: pointer; user-select: none; width: 16px;\">+<\/span>';\r\n                html += '<span>\/' + escapeHtml(key) + '<\/span>';\r\n                html += '<span class=\"aitool-card-badge\" style=\"font-size: 10px; padding: 1px 6px; font-weight: normal;\">' + countUrlsInNode(node) + ' URL' + (countUrlsInNode(node) !== 1 ? 's' : '') + '<\/span>';\r\n                html += '<\/div>';\r\n                html += '<div class=\"sv-tree-children\" style=\"display: none;\">';\r\n                html += renderTree(node, level + 1, key);\r\n                html += '<\/div>';\r\n            }\r\n\r\n            html += '<\/li>';\r\n        }\r\n\r\n        html += '<\/ul>';\r\n        return html;\r\n    }\r\n\r\n    function renderFlatTable(urls) {\r\n        if (!urls || urls.length === 0) return '<div class=\"aitool-card-highlight\" style=\"margin-bottom:0;\">No URL records located in sitemap document.<\/div>';\r\n\r\n        var html = '<div class=\"aitool-table-wrapper\">';\r\n        html += '<table style=\"width: 100%; border-collapse: collapse; font-size: 13px; text-align: left;\">';\r\n        html += '<thead><tr style=\"background: rgba(255, 255, 255, 0.04); border-bottom: 1px solid rgba(214, 214, 214, 0.1);\">';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor); width: 50px;\">#<\/th>';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor);\">URL Location<\/th>';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor); width: 180px;\">Last Modified<\/th>';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor); width: 110px;\">Frequency<\/th>';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor); width: 90px;\">Priority<\/th>';\r\n        html += '<\/tr><\/thead><tbody>';\r\n\r\n        urls.forEach(function (item, index) {\r\n            html += '<tr style=\"border-bottom: 1px solid rgba(214, 214, 214, 0.08);\">';\r\n            html += '<td style=\"padding: 9px 14px; color: var(--BodyTxtColor);\">' + (index + 1) + '<\/td>';\r\n            html += '<td style=\"padding: 9px 14px;\"><a href=\"' + escapeHtml(item.loc) + '\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: var(--PrimaryColor); text-decoration: none; word-break: break-all;\">' + escapeHtml(item.loc) + '<\/a><\/td>';\r\n            html += '<td style=\"padding: 9px 14px; color: var(--BodyTxtColor); font-family: monospace;\">' + (item.lastmod ? formatDate(item.lastmod) : '-') + '<\/td>';\r\n            html += '<td style=\"padding: 9px 14px; color: var(--BodyTxtColor);\">' + escapeHtml(item.changefreq || '-') + '<\/td>';\r\n            html += '<td style=\"padding: 9px 14px; color: var(--BodyTxtColor);\">' + escapeHtml(item.priority || '-') + '<\/td>';\r\n            html += '<\/tr>';\r\n        });\r\n\r\n        html += '<\/tbody><\/table><\/div>';\r\n        return html;\r\n    }\r\n\r\n    function attachToggleEvents() {\r\n        $('.sv-tree-toggle, .sv-tree-folder').off('click').on('click', function (e) {\r\n            e.stopPropagation();\r\n            var $item = $(this).closest('li');\r\n            var $toggle = $item.find('> .sv-tree-folder > .sv-tree-toggle');\r\n            var $children = $item.find('> .sv-tree-children');\r\n            var isExpanded = $toggle.data('expanded');\r\n\r\n            if (isExpanded) {\r\n                $children.slideUp(180);\r\n                $toggle.text('+').data('expanded', false);\r\n            } else {\r\n                $children.slideDown(180);\r\n                $toggle.text('\u2212').data('expanded', true);\r\n            }\r\n        });\r\n    }\r\n\r\n    async function fetchSitemap(url) {\r\n        $loadBtn.prop('disabled', true).text('Parsing...');\r\n        $resultArea.html(\r\n            '<div class=\"aitool-loading\">' +\r\n            '<span class=\"aitool-loading-spinner\">\u27f3<\/span>' +\r\n            'Downloading and parsing sitemap payload...' +\r\n            '<\/div>'\r\n        );\r\n        $statsCard.hide();\r\n\r\n        try {\r\n            var params = new URLSearchParams();\r\n            params.append('action', 'fetch_sitemap');\r\n            params.append('nonce', nonce);\r\n            params.append('url', url);\r\n\r\n            var resp = await fetch(ajaxUrl, {\r\n                method: 'POST',\r\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\r\n                body: params.toString()\r\n            });\r\n\r\n            if (!resp.ok) {\r\n                throw new Error('Server returned HTTP ' + resp.status);\r\n            }\r\n\r\n            var json = await resp.json();\r\n            if (!json.success) {\r\n                throw new Error(json.data ? json.data.message : 'Failed to retrieve XML content.');\r\n            }\r\n\r\n            parseSitemap(json.data.xml, url);\r\n        } catch (err) {\r\n            $resultArea.html('<div class=\"aitool-error\">Error: ' + escapeHtml(err.message) + '<\/div>');\r\n        } finally {\r\n            $loadBtn.prop('disabled', false).text('Parse Sitemap');\r\n        }\r\n    }\r\n\r\n    function parseSitemap(xmlText, sitemapUrl) {\r\n        var parser = new DOMParser();\r\n        var xmlDoc = parser.parseFromString(xmlText, 'text\/xml');\r\n\r\n        if (xmlDoc.querySelector('parsererror')) {\r\n            $resultArea.html('<div class=\"aitool-error\">Error: Invalid XML structure detected. Please verify that the URL leads to a valid sitemap.<\/div>');\r\n            return;\r\n        }\r\n\r\n        var sitemapIndex = xmlDoc.querySelector('sitemapindex');\r\n\r\n        if (sitemapIndex) {\r\n            var sitemaps = [];\r\n            var sitemapNodes = xmlDoc.querySelectorAll('sitemap');\r\n\r\n            sitemapNodes.forEach(function (node) {\r\n                var loc = node.querySelector('loc') ? node.querySelector('loc').textContent.trim() : null;\r\n                var lastmod = node.querySelector('lastmod') ? node.querySelector('lastmod').textContent.trim() : null;\r\n                if (loc) {\r\n                    sitemaps.push({ loc: loc, lastmod: lastmod });\r\n                }\r\n            });\r\n\r\n            displaySitemapIndex(sitemaps, sitemapUrl);\r\n        } else {\r\n            var urls = [];\r\n            var urlNodes = xmlDoc.querySelectorAll('url');\r\n\r\n            urlNodes.forEach(function (node) {\r\n                var loc = node.querySelector('loc') ? node.querySelector('loc').textContent.trim() : null;\r\n                var lastmod = node.querySelector('lastmod') ? node.querySelector('lastmod').textContent.trim() : null;\r\n                var changefreq = node.querySelector('changefreq') ? node.querySelector('changefreq').textContent.trim() : null;\r\n                var priority = node.querySelector('priority') ? node.querySelector('priority').textContent.trim() : null;\r\n\r\n                if (loc) {\r\n                    urls.push({\r\n                        loc: loc,\r\n                        lastmod: lastmod,\r\n                        changefreq: changefreq,\r\n                        priority: priority\r\n                    });\r\n                }\r\n            });\r\n\r\n            displaySitemap(urls, sitemapUrl);\r\n        }\r\n    }\r\n\r\n    function displaySitemapIndex(sitemaps, sitemapUrl) {\r\n        var domain = getDomainFromUrl(sitemapUrl);\r\n\r\n        $statsCard.show();\r\n        $sitemapType.text('Sitemap Index');\r\n        $totalUrls.text(sitemaps.length + ' Sitemaps');\r\n        $lastMod.text('-');\r\n        $targetHost.text(domain || '-');\r\n        $statusBadge.text('Index Verified').css('color', '#22c55e');\r\n\r\n        var html = '<div class=\"aitool-card\">';\r\n        html += '<div class=\"aitool-card-header\">';\r\n        html += '<span class=\"aitool-card-title\">Sitemap Index Registry<\/span>';\r\n        html += '<span class=\"aitool-card-badge\">' + sitemaps.length + ' Child Sitemaps<\/span>';\r\n        html += '<\/div>';\r\n\r\n        html += '<div class=\"aitool-card-body\" style=\"padding: 15px;\">';\r\n        html += '<div class=\"aitool-table-wrapper\">';\r\n        html += '<table style=\"width: 100%; border-collapse: collapse; font-size: 13px; text-align: left;\">';\r\n        html += '<thead><tr style=\"background: rgba(255, 255, 255, 0.04); border-bottom: 1px solid rgba(214, 214, 214, 0.1);\">';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor); width: 50px;\">#<\/th>';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor);\">Child Sitemap URL<\/th>';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor); width: 220px;\">Last Modified<\/th>';\r\n        html += '<th style=\"padding: 10px 14px; color: var(--PrimaryColor); width: 110px;\">Action<\/th>';\r\n        html += '<\/tr><\/thead><tbody>';\r\n\r\n        sitemaps.forEach(function (item, index) {\r\n            html += '<tr style=\"border-bottom: 1px solid rgba(214, 214, 214, 0.08);\">';\r\n            html += '<td style=\"padding: 9px 14px; color: var(--BodyTxtColor);\">' + (index + 1) + '<\/td>';\r\n            html += '<td style=\"padding: 9px 14px; word-break: break-all; color: var(--AccentTxtColor);\">' + escapeHtml(item.loc) + '<\/td>';\r\n            html += '<td style=\"padding: 9px 14px; color: var(--BodyTxtColor); font-family: monospace;\">' + (item.lastmod ? formatDate(item.lastmod) : '-') + '<\/td>';\r\n            html += '<td style=\"padding: 9px 14px;\"><button type=\"button\" class=\"aitool-action-btn sv-drill-btn\" data-url=\"' + escapeHtml(item.loc) + '\" style=\"padding: 4px 10px; font-size: 11px;\">Inspect<\/button><\/td>';\r\n            html += '<\/tr>';\r\n        });\r\n\r\n        html += '<\/tbody><\/table><\/div><\/div><\/div>';\r\n\r\n        $resultArea.html(html);\r\n\r\n        $('.sv-drill-btn').on('click', function () {\r\n            var selectedUrl = $(this).data('url');\r\n            $urlInput.val(selectedUrl);\r\n            fetchSitemap(selectedUrl);\r\n        });\r\n    }\r\n\r\n    function displaySitemap(urls, sitemapUrl) {\r\n        var domain = getDomainFromUrl(sitemapUrl);\r\n\r\n        $statsCard.show();\r\n        $sitemapType.text('Standard URL Set');\r\n        $totalUrls.text(urls.length.toLocaleString() + ' URLs');\r\n        $targetHost.text(domain || '-');\r\n\r\n        var latestMod = '-';\r\n        for (var i = 0; i < urls.length; i++) {\r\n            if (urls[i].lastmod) {\r\n                latestMod = urls[i].lastmod;\r\n                break;\r\n            }\r\n        }\r\n        $lastMod.text(formatDate(latestMod));\r\n        $statusBadge.text('Valid XML').css('color', '#22c55e');\r\n\r\n        var urlStrings = urls.map(function (u) { return u.loc; });\r\n        var treeData = buildTree(urlStrings);\r\n\r\n        var html = '<div class=\"aitool-card\">';\r\n        html += '<div class=\"aitool-card-header\">';\r\n        html += '<span class=\"aitool-card-title\">Sitemap Explorer<\/span>';\r\n        html += '<div class=\"aitool-mode-tabs\" style=\"margin-bottom: 0;\">';\r\n        html += '<button type=\"button\" class=\"aitool-mode-tab active sv-view-tab\" data-view=\"tree\">Directory Tree<\/button>';\r\n        html += '<button type=\"button\" class=\"aitool-mode-tab sv-view-tab\" data-view=\"table\">Tabular View<\/button>';\r\n        html += '<\/div><\/div>';\r\n\r\n        html += '<div class=\"aitool-card-body\" style=\"padding: 20px;\">';\r\n        html += '<div id=\"sv-tree-view\" class=\"aitool-card-highlight\" style=\"background: var(--BodyBGColor); border-left-color: var(--PrimaryColor); max-height: 550px; overflow-y: auto; margin-bottom: 0;\">';\r\n        html += renderTree(treeData, 0, '');\r\n        html += '<\/div>';\r\n\r\n        html += '<div id=\"sv-table-view\" style=\"display: none; max-height: 550px; overflow-y: auto;\">';\r\n        html += renderFlatTable(urls);\r\n        html += '<\/div>';\r\n        html += '<\/div><\/div>';\r\n\r\n        $resultArea.html(html);\r\n        attachToggleEvents();\r\n\r\n        $('.sv-view-tab').on('click', function () {\r\n            $('.sv-view-tab').removeClass('active');\r\n            $(this).addClass('active');\r\n\r\n            var view = $(this).data('view');\r\n            if (view === 'tree') {\r\n                $('#sv-tree-view').show();\r\n                $('#sv-table-view').hide();\r\n            } else {\r\n                $('#sv-tree-view').hide();\r\n                $('#sv-table-view').show();\r\n            }\r\n        });\r\n    }\r\n\r\n    $loadBtn.on('click', function () {\r\n        var url = $urlInput.val().trim();\r\n        if (!url) {\r\n            alert('Please specify a target sitemap URL.');\r\n            return;\r\n        }\r\n\r\n        if (!\/^https?:\\\/\\\/\/i.test(url)) {\r\n            url = 'https:\/\/' + url;\r\n            $urlInput.val(url);\r\n        }\r\n\r\n        fetchSitemap(url);\r\n    });\r\n\r\n    $clearBtn.on('click', function () {\r\n        $urlInput.val('');\r\n        $statsCard.hide();\r\n        $resultArea.html(\r\n            '<div class=\"aitool-card-highlight\" style=\"margin-bottom: 0;\">' +\r\n            '<div class=\"aitool-card-highlight-label\">Awaiting Input<\/div>' +\r\n            '<div class=\"aitool-card-content\" style=\"color: var(--BodyTxtColor);\">' +\r\n            'Enter an XML sitemap URL and select Parse Sitemap to analyze the URL directory tree.' +\r\n            '<\/div>' +\r\n            '<\/div>'\r\n        );\r\n    });\r\n});\r\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":3234,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3161","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages\/3161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/comments?post=3161"}],"version-history":[{"count":4,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages\/3161\/revisions"}],"predecessor-version":[{"id":3165,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages\/3161\/revisions\/3165"}],"up":[{"embeddable":true,"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/pages\/3234"}],"wp:attachment":[{"href":"https:\/\/digitalbridgehub.com\/acrossysdigital\/wp-json\/wp\/v2\/media?parent=3161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}