Node.js xml2js - при создании атрибутов карты сайта игнорируются - PullRequest
0 голосов
/ 28 октября 2019

Я использую node.js и xml2js для создания xml sitemap.xml.

Выглядит все отлично, но когда я хочу определить атрибуты, например:

'$': {
    'xmlns': 'http://www.sitemaps.org/schemas/sitemap/0.9'
},

... как это:

var obj = {
    'urlset': {
        '$': {
            'xmlns': 'http://www.sitemaps.org/schemas/sitemap/0.9'
        },
        'url': [
            {
                'loc': URL_DOMAIN,
                'changefreq': 'monthly',
                'priority': 1
            },
            {
                'loc': URL_DOMAIN+'/data-privacy',
                'changefreq': 'monthly',
                'priority': 0.5
            }
        ]
    }
};

var builder = new xml2js.Builder({ xmldec: {'version': '1.0', 'encoding': 'UTF-8'} });
var xml = builder.buildObject(obj);

res.header('Content-Type','text/xml').send(xml) 

... атрибутыдля urlset не будет отображаться:

<urlset>
    <url>
        <loc>http://127.0.0.1:2000</loc>
        <changefreq>monthly</changefreq>
        <priority>1</priority>
        </url>
    <url>
        <loc>http://127.0.0.1:2000/data-privacy</loc>
        <changefreq>daily</changefreq>
        <priority>0.5</priority>
    </url>
</url>  

... я бы ожидал:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    ...
</url>  

Чего мне не хватает?

... Если я это сделаютест:

    'urlset': {
        '$': {
            'test': 'test'
        },

... работает:

<urlset test="test">
    ...
</url>  

1 Ответ

1 голос
/ 28 октября 2019

Это не ответ, а попытка доказать, что код ОП действителен.

Я скопировал ваш код и создал REPL ?.

https://repl.it/@nithinthampi/PeriodicBraveClients.

Нажмите Run code snippet ниже, чтобы увидеть, что ответ имеет пространство имен xml (Вы также можете скопировать код для запуска в консоли браузера)

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

fetch("https://periodicbraveclients.nithinthampi.repl.co/").then(res => res.text()).then(xml => console.log(xml))

Возможно, что-то связано с браузером. Ниже скриншот моего браузера.

This is what I see in browser

...