これは古い投稿であることは知っていますが、偶然見つけました。残念ながら、Patrick の回答はあまり役に立ちませんでした。せいぜい、文字列が少なくとも XML を試みていたと判断するかもしれません。最悪の場合、スペースなどのプレフィックスが付けられている可能性があるため、一致するものさえ得られません。また、素晴らしい状況ではありません。 XML 自体は、タグが欠落しているなどの理由で、まだ有効ではありません。
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);