使用node.jsvalidationXML语法/结构

我想validation下面使用node.js的XML。 任何人都可以提出一个好的node.js模块,可以在Windows / Linux上工作吗?

  • validationXML语法
  • validationXML结构(模式)

提前致谢。

我知道这是一个较旧的post,但是我碰到了,不幸的是,Ankit的回答对我来说并不是很有帮助。 它最好集中在input是否是有效的XML语法,而不是是否遵守OP中的模式。

我发现libxmljs是您寻找的最佳解决scheme。 你可以parsing,validation基本的string,以及一个详细的结构。

检查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); 

UPDATE

看到conrad10781的答案。 这个答案已经过时,因为我链接的原始Wiki页面已经被归档了,尽pipe它确实突出显示了哪些模块可以validation语法和模式。

OUTDATED INFO

有很多XMLparsing器可以通过npm获得 。

本地实现(例如node-expat)确实需要构buildC ++扩展,以便可以打破模块在Windows和Linux上的工作要求,但是由于其提供的速度,您应该尝试一下,特别是如果您正在处理大型XML文件。

xmldom应该能够从string中提供一些非常简单的XMLparsing。 然后,您可以创build一个函数,根据parsing的输出简单地返回true / false(检查DOMParser如何返回错误)。