2012-06-15 23 views

答えて

0

UPDATE

はconrad10781の回答を参照してください。この回答は、リンクされた元のWikiページがアーカイブされているので時代遅れですが、どのモジュールが構文とスキーマの両方を検証できるかを強調しました。

時代遅れINFO

npmを介して利用可能なXMLパーサの茄多があります。

ネイティブ実装(node-expatなど)では、モジュールがWindowsとLinuxの両方で動作するようにするためにC++拡張モジュールをビルドする必要がありますが、特に、大規模なXMLファイルを扱っている場合は特にそうです。

xmldomは、文字列から非常に単純なXML解析を提供できるはずです。次に、解析の出力に応じてtrue/falseを返す関数を作成できます(DOMParserがエラーを返す方法を確認してください)。

+0

最初のリンク:特定の構造/スキーマのチェックの例のようなものとなり

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

XML構文のチェックの例のようなものとなりますto XML Parser Modulesが壊れています。 – spoulson

+0

@spoulsonそれを私の注意を引くことに感謝します。 npmウェブサイトを直接指すように解決しました。 –

8

これは古いポストだと知っていますが、私はそれを見つけました。残念なことに、Ankitの答えはひどく役に立ちませんでした。入力が有効なXML構文であるかどうかは、OPの一部であったスキーマに準拠しているかどうかにはまったく関係がありませんでした。

私はlibxmljsがあなたの探しているものに最適なソリューションであることを発見しました。解析することができ、基本的な文字列と詳細な構造を検証することができます。

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); 
関連する問題