Node.js xml2js-创建站点地图属性时将被忽略

时间:2019-10-28 12:18:12

标签: javascript node.js xml sitemap xml2js

我正在使用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>
    <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 个答案:

答案 0 :(得分:1)

这不是答案,而是试图证明OP的代码有效。

我已经复制了您的代码并创建了REPL?。

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

点击下面的var input = "Hello"; var result = "" for(var i=0;i<input.length;i++) { var curr = String.fromCharCode(input.charCodeAt(i)+1); result = result +curr; } console.log(result); ,以查看响应是否具有xml名称空间(您也可以在浏览器控制台中复制运行代码)

Run code snippet

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

可能与浏览器有关。以下是我的浏览器屏幕截图。

This is what I see in browser