簡體   English   中英

Node.js xml2js - 創建站點地圖屬性時被忽略

[英]Node.js xml2js - When creating sitemap attributes are being ignored

我正在使用 node.js 和 xml2js 創建 xml 站點地圖。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>  

這不是一個答案,而是試圖證明 OP 的代碼是有效的。

我已經復制了您的代碼並創建了一個 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))

可能與瀏覽器有關。 下面是我的瀏覽器截圖。

這是我在瀏覽器中看到的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM