【问题标题】:Node.js - XML validationNode.js - XML 验证
【发布时间】:2020-09-25 12:13:34
【问题描述】:

如何验证 node.js 中的 xml?我主要感兴趣的是只检查文件是否格式正确。另外,我想收到发生错误的行号。

我有以下测试 xml:

<?xml version="1.0" encoding="UTF-8" ?>
<body>
    <tagname>
        test1
    </tag.name>   <--- error here
    <tagname>
        test2
    </tagname>
</body>

到目前为止我所尝试的:

xmldom:

var parser = new DOMParser({errorHandler: (level, error) => {
    console.log (level, error);
}});
var dom = parser.parseFromString(content, 'application/xml');

问题:没有错误指示。永远不会调用错误处理程序,并且 dom 包含“test1”但不包含“test2”。所以解析器只是停止并吞下错误。

libxmljs:

var xmlDoc = libxmljs.parseXml(xml);

问题:抛出无法描述的异常“标签正文中的数据过早结束”。

【问题讨论】:

    标签: node.js xml validation xmldom libxml-js


    【解决方案1】:

    我们最近也不得不使用 NodeJS 进行一些 xml 解析,最终使用了fast-xml-parser,到目前为止,我们对此非常满意。应用于您的案例,您可以使用.validate(..) 方法:

    const xmlString = `<?xml version="1.0" encoding="UTF-8" ?>
    <body>
        <tagname>
            test1
        </tag.name>   <--- error here
        <tagname>
            test2
        </tagname>
    </body>`;
    
    const parser = require('fast-xml-parser');
    
    const validationResult = parser.validate(xmlString);
    console.log(validationResult)
    
    // validationResult will be an object of:
    {
      err: {
        code: 'InvalidTag',
        msg: "Closing tag 'tagname' is expected inplace of 'tag.name'.",
        line: 5
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 2011-03-23
      • 1970-01-01
      • 2014-06-08
      • 2012-10-23
      • 2014-02-27
      相关资源
      最近更新 更多