【发布时间】:2019-03-19 09:02:47
【问题描述】:
我遇到了解析器错误地转换数组的问题。
数组创建代码(查看DocFiles):
documents.push({
// Document fields...
DocFiles: []
});
for (const file of files) {
documents[documents.length - 1].DocFiles.push({ File: file });
}
或者:
documents.push({
// Document fields...
DocFiles: files.map(file => ({ File: file }))
});
数组得到如下形式:
documents: [
{
DocFiles: [
{ File: Object },
{ File: Object },
{ File: Object }
},
{
DocFiles: [
{ File: Object },
{ File: Object },
{ File: Object }
}
]
我想在 DocFiles 节点的每个文档中得到什么:
<DocFiles>
<File>{fileNodes}</File>
<File>{fileNodes}</File>
<File>{fileNodes}</File>
</DocFiles>
我得到了什么:
<DocFiles>
<File>{fileNodes}</File>
</DocFiles>
<DocFiles>
<File>{fileNodes}</File>
</DocFiles>
<DocFiles>
<File>{fileNodes}</File>
</DocFiles>
我做错了什么?
- 解析器选项:
const options = {
attributeNamePrefix: '@_',
attrNodeName: '@',
textNodeName: '#text',
ignoreAttributes: true,
cdataTagName: '__cdata',
cdataPositionChar: '\\c',
format: true,
indentBy: ' ',
supressEmptyNode: true,
tagValueProcessor: a => a,
attrValueProcessor: a => a
}
- 解析和编写代码:
for (const document of documents) {
const parent = { Nomenclature: document };
const fileName = `${Date.now().toString()}.xml`;
const Parser = xml.j2xParser;
const parser = new Parser(options);
const value = await parser.parse(parent);
await fs.writeFileSync(path.join(dir, fileName), value);
}
- 解析前:
- 解析结果:
【问题讨论】:
-
您应该在此处复制粘贴您的代码,而不是使用图像。即使图像被关闭,它也会保留在那里,我们不必点击打开它们......
-
好的,我改变了问题
-
@SergeySovgut 如果您的问题已解决,您可以接受答案。
标签: javascript arrays node.js