使用node.js验证XML语法/结构

时间:2012-06-15 12:36:20

标签: xml node.js schema

我想使用node.js验证以下XML。任何人都可以建议在windows / linux上运行良好的node.js模块吗?

  • 验证XML语法
  • 验证XML结构(架构)

提前致谢。

2 个答案:

答案 0 :(得分:8)

我知道这是一篇较老的帖子,但我遇到过它,不幸的是,Ankit的回答对我来说并不是很有帮助。它最关注的是输入是否是有效的XML语法,而不是是否遵循模式,这是OP的一部分。

我发现libxmljs是您正在寻找的最佳解决方案。您可以解析,验证基本字符串以及详细结构。

检查XML语法的一个例子是:

program.isValidSyntaxStructure = function (text) {
    try {
        libxmljs.parseXml(text);
    } catch (e) {
        return false;
    }

    return true;
};

检查特定结构/模式的示例如下:

var xsd = '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="comment" type="xs:string"/></xs:schema>';
var xml_valid = '<?xml version="1.0"?><comment>A comment</comment>';
var xml_invalid = '<?xml version="1.0"?><commentt>A comment</commentt>';

var xsdDoc = libxml.parseXml(xsd);
var xmlDocValid = libxml.parseXml(xml_valid);
var xmlDocInvalid = libxml.parseXml(xml_invalid);

assert.equal(xmlDocValid.validate(xsdDoc), true);
assert.equal(xmlDocInvalid.validate(xsdDoc), false);

答案 1 :(得分:0)

<强>更新

请参阅conrad10781的回答。这个答案已经过时,因为我链接的原始Wiki页面已经存档,但它确实强调了哪些模块可以验证语法和架构。

结束信息

通过npm提供了大量的XML解析器。

本机实现(例如node-expat)确实需要构建C ++扩展,这样可能会破坏模块在Windows和Linux中工作的要求,但是由于它们提供的速度,无论如何都应该尝试它们,特别是如果你正在处理大型XML文件。

xmldom应该能够从字符串中提供一些非常简单的XML解析。然后,您可以创建一个函数,根据解析的输出返回true / false(查看DOMParser如何返回错误)。