【问题标题】:Validate XML Syntax / Structure with node.js使用 node.js 验证 XML 语法/结构
【发布时间】:2012-06-18 12:41:19
【问题描述】:

我想使用 node.js 为以下内容验证 XML。任何人都可以推荐在 windows/linux 上都可以使用的好的 node.js 模块吗?

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

提前致谢。

【问题讨论】:

    标签: xml node.js schema


    【解决方案1】:

    我知道这是一篇较旧的帖子,但我偶然发现了它,不幸的是,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);
    

    【讨论】:

      【解决方案2】:

      更新

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

      过时的信息

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

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

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

      【讨论】:

      • XML Parser Modules 的第一个链接现已断开。
      • @spoulson 感谢您引起我的注意。解析为直接指向npm网站。
      猜你喜欢
      • 2020-06-02
      • 1970-01-01
      • 2012-06-04
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多