【问题标题】:XML Parser Package for Non-Valid String无效字符串的 XML 解析器包
【发布时间】:2021-06-03 23:33:29
【问题描述】:

我有这种从 DYMO 打印机 API 获得的 xml 字符串。

"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Printers><LabelWriterPrinter><Name>DYMO LabelWriter 450<\/Name><ModelName>DYMO LabelWriter 450<\/ModelName><IsConnected>False<\/IsConnected><IsLocal>True<\/IsLocal><IsTwinTurbo>False<\/IsTwinTurbo><\/LabelWriterPrinter><\/Printers>\n"

如您所见,它包含引号、转义 () 和换行 (\n) 字符。我检查了一些 XML 到 json 包,但找不到以这种格式解析 XML 的选项。 我可以使用 (substr, replace) 方法来操作字符串,但它看起来并不那么干净。你知道有什么包可以快速处理吗?另外,我想了解一下这种字符串模板的命名约定是什么?

【问题讨论】:

  • 转义换行符正是多行字符串的表示方式,所以我不确定您对此有何反应?

标签: javascript xml-parsing


【解决方案1】:

这是一个包含完全有效 XML 的字符串。它没有什么特别之处。我认为您可能对转义感到困惑,但这就是这些符号在字符串中的表示方式。这是我在 Node 中的 REPL-ing(观察打印时字符串的外观 - 所有转义字符都消失了):

const str='<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Printers><LabelWriterPrinter><Name>DYMO LabelWriter 450<\/Name><ModelName>DYMO LabelWriter 450<\/ModelName><IsConnected>False<\/IsConnected><IsLocal>True<\/IsLocal><IsTwinTurbo>False<\/IsTwinTurbo><\/LabelWriterPrinter><\/Printers>\n'
console.log(str)
<?xml version="1.0" encoding="utf-8"?>
<Printers><LabelWriterPrinter><Name>DYMO LabelWriter 450</Name><ModelName>DYMO LabelWriter 450</ModelName><IsConnected>False</IsConnected><IsLocal>True</IsLocal><IsTwinTurbo>False</IsTwinTurbo></LabelWriterPrinter></Printers>

const parseString = require('xml2js').parseString;
parseString(str, function(err, res){ console.log(JSON.stringify(res, null, 2)) ; } )
{
  "Printers": {
    "LabelWriterPrinter": [
      {
        "Name": [
          "DYMO LabelWriter 450"
        ],
        "ModelName": [
          "DYMO LabelWriter 450"
        ],
        "IsConnected": [
          "False"
        ],
        "IsLocal": [
          "True"
        ],
        "IsTwinTurbo": [
          "False"
        ]
      }
    ]
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多