0

我在 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,然后${name}用它们的 JS 对应物替换和其他变量。我尝试在这个答案fs.readfile()之后使用 raw ,但它不起作用,因为 XML 没有被解析为编码(或者这是我对出了什么问题的最佳猜测)。我发现的其他大多数问题要么与 Site-Mapped-JS 有关,要么最终将 XML 转换为 JSON。

4

1 回答 1

1

您是否尝试使用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}));
于 2022-02-14T22:11:39.257 回答