NodeJS 将 XML 加载到编码字符串中
NodeJS Load XML into Encoded String
我用 NodeJS 编写了一个服务器,它使用 DymoJS 将标签打印到 Dymo 打印机。打印时,必须指定标签布局的XML。该文档概述了以下声明标签 XML:
var labelXml = `
<?xml version="1.0" encoding="utf-8"?>
<DieCutLabel Version="8.0" Units="twips">
...
<StyledText>
<Element>
<String>T</String>
<Attributes>
<Font Family="Helvetica" Size="13"
Bold="False" Italic="False" Underline="False" Strikeout="False"/>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>
</Attributes>
</Element>
<Element>
<String>EST123</String>
<Attributes>
<Font Family="Helvetica" Size="13"
Bold="False" Italic="False" Underline="False" Strikeout="False"/>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>
</Attributes>
</Element>
</StyledText>
</DieCutLabel>
`;
但是在我的 XML 中,<String>
元素依赖于 JS 变量:
<Element>\
<String>${name}\n</String>\
...
</Element>\
我编写的服务器分布在多个端点上,这些端点使用不同的打印机,因此使用不同的标签,这意味着它们需要不同的 XML 规范。
我想要的是能够从文档中加载基本的 XML,然后用对应的 JS 替换 ${name}
和其他变量。 我尝试在 this answer 之后使用原始 fs.readfile()
,但没有用,因为 XML 没有被解析为编码(或者这是我对发生了什么的最佳猜测错误的)。我发现的其余大部分问题要么与 Site-Mapped-JS 有关,要么最终将 XML 转换为 JSON.
您尝试使用 xml-js 了吗?
您可以将结构编辑为 js 对象,然后将其转换为 xml。
例如:
const fs = require('fs');
const convert = require('xml-js');
const xml = fs.readFileSync('prueba.xml');
const js = convert.xml2js(xml, {compact: true});
js['DieCutLabel']['StyledText']['Element'][0]['String'] = 'Value of name';
console.log(convert.js2xml(js, {compact: true}));
我用 NodeJS 编写了一个服务器,它使用 DymoJS 将标签打印到 Dymo 打印机。打印时,必须指定标签布局的XML。该文档概述了以下声明标签 XML:
var labelXml = `
<?xml version="1.0" encoding="utf-8"?>
<DieCutLabel Version="8.0" Units="twips">
...
<StyledText>
<Element>
<String>T</String>
<Attributes>
<Font Family="Helvetica" Size="13"
Bold="False" Italic="False" Underline="False" Strikeout="False"/>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>
</Attributes>
</Element>
<Element>
<String>EST123</String>
<Attributes>
<Font Family="Helvetica" Size="13"
Bold="False" Italic="False" Underline="False" Strikeout="False"/>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>
</Attributes>
</Element>
</StyledText>
</DieCutLabel>
`;
但是在我的 XML 中,<String>
元素依赖于 JS 变量:
<Element>\
<String>${name}\n</String>\
...
</Element>\
我编写的服务器分布在多个端点上,这些端点使用不同的打印机,因此使用不同的标签,这意味着它们需要不同的 XML 规范。
我想要的是能够从文档中加载基本的 XML,然后用对应的 JS 替换 ${name}
和其他变量。 我尝试在 this answer 之后使用原始 fs.readfile()
,但没有用,因为 XML 没有被解析为编码(或者这是我对发生了什么的最佳猜测错误的)。我发现的其余大部分问题要么与 Site-Mapped-JS 有关,要么最终将 XML 转换为 JSON.
您尝试使用 xml-js 了吗?
您可以将结构编辑为 js 对象,然后将其转换为 xml。
例如:
const fs = require('fs');
const convert = require('xml-js');
const xml = fs.readFileSync('prueba.xml');
const js = convert.xml2js(xml, {compact: true});
js['DieCutLabel']['StyledText']['Element'][0]['String'] = 'Value of name';
console.log(convert.js2xml(js, {compact: true}));