Sé que esta es una publicación anterior, pero me encontré con ella, y desafortunadamente, la respuesta de Ankit no fue de mucha ayuda para mí. En el mejor de los casos se centró en si la entrada es una sintaxis XML válida, no si está adherida a un esquema, que era parte del OP.
He encontrado libxmljs para ser la mejor solución para lo que estás buscando. Puede analizar, validar la cadena básica, así como una estructura detallada.
Un ejemplo de comprobación de una sintaxis XML sería con algo como:
program.isValidSyntaxStructure = function (text) {
try {
libxmljs.parseXml(text);
} catch (e) {
return false;
}
return true;
};
Un ejemplo de comprobación de una estructura específica/esquema sería con algo como:
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);
El primer enlace a XML Parser Modules ahora está roto. – spoulson
@spoulson gracias por traer eso a mi atención. Se resolvió señalar directamente al sitio web de npm. –