Node.js xml2js - 创建站点地图时属性被忽略
Node.js xml2js - When creating sitemap attributes are being ignored
我正在使用 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>
这不是答案,而是试图证明 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))
可能与浏览器有关。下面是我的浏览器截图。
我正在使用 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>
这不是答案,而是试图证明 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))
可能与浏览器有关。下面是我的浏览器截图。