在 NodeJS 中解析 XML 时出现意外的标记 <

spa*_*man 0 xml node.js xml-parsing

我尝试使用xml-jsandxml2js但两者都返回相同的错误。

<?xml version="1.0" encoding="UTF-8"?>
^

SyntaxError: Unexpected token <
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
Run Code Online (Sandbox Code Playgroud)

xml 示例:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>
Run Code Online (Sandbox Code Playgroud)

代码示例:

var notes =require('./test.xml')

var convert = require('xml-js');
var xml =notes;

var result1 = convert.xml2json(xml, {compact: true, spaces: 4});
var result2 = convert.xml2json(xml, {compact: false, spaces: 4});

console.log(result1, '\n', result2);
Run Code Online (Sandbox Code Playgroud)

你能帮忙解决这个问题吗?我尝试过使用JSON.parseJSON.stringify但无论如何它都不起作用。

顺便说一句,我正在尝试解析 XML 以将其转换为 JSON。

Mur*_*nik 5

问题不在于 XML 解析,而在于您正在使用require,它加载 Node.js 模块来读取另一个文件。相反,您应该使用简单的文件读取方法,例如fs.readSync

fs = require('fs');
var notes = fs.readFileSync('./test.xml')
Run Code Online (Sandbox Code Playgroud)