2012-06-15 13 views
5

के साथ मान्य करें मैं node.js. का उपयोग कर नीचे के लिए XML को मान्य करना चाहता हूं। क्या कोई अच्छा node.js मॉड्यूल सुझा सकता है जो विंडोज/लिनक्स दोनों पर काम करता है?एक्सएमएल सिंटेक्स/संरचना node.js

  • XML सत्यापित करें सिंटेक्स
  • XML सत्यापित संरचना (स्कीमा)

अग्रिम धन्यवाद।

उत्तर

0

अद्यतन

conrad10781 देखते हैं जवाब। यह उत्तर मूल विकी पेज के रूप में पुराना है जिसे मैंने लिंक किया है, संग्रहीत किया गया है, हालांकि यह हाइलाइट करता है कि कौन से मॉड्यूल ने सिंटैक्स और स्कीमा दोनों को मान्य करना संभव बना दिया है।

पुरानी जानकारी

npm के माध्यम से उपलब्ध एक्सएमएल पारसर्स के ढेर सारे हैं।

देशी कार्यान्वयन (जैसे नोड-एक्सपैट) को सी ++ एक्सटेंशन के निर्माण की आवश्यकता होती है ताकि मॉड्यूल के लिए विंडोज और लिनक्स दोनों में काम करने की आवश्यकता को तोड़ दिया जा सके, लेकिन वे जो गति प्रदान करते हैं, उन्हें आपको वैसे भी कोशिश करनी चाहिए , खासकर अगर आप बड़ी एक्सएमएल फाइलों से निपट रहे हैं।

xmldom स्ट्रिंग से कुछ बहुत ही सरल एक्सएमएल पार्सिंग प्रदान करने में सक्षम होना चाहिए। फिर आप पार्स के आउटपुट के आधार पर सही/गलत लौटने के लिए एक फ़ंक्शन बना सकते हैं (देखें कि DOMParser त्रुटियों को कैसे लौटाता है)।

+0

पहले लिंक:

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

एक विशिष्ट संरचना के लिए जाँच का एक उदाहरण/स्कीमा की तरह कुछ के साथ होगा एक्सएमएल पार्सर मॉड्यूल को अब टूटा हुआ है। – spoulson

+0

@spoulson मेरे ध्यान में लाने के लिए धन्यवाद। सीधे एनपीएम वेबसाइट पर इंगित करने के लिए हल किया गया। –

8

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मैं इसे पार कर गया, और दुर्भाग्य से, अंकित का जवाब मेरे लिए बहुत उपयोगी नहीं था। यह इस बात पर सबसे अच्छा ध्यान केंद्रित करता है कि इनपुट वैध एक्सएमएल सिंटैक्स है, न कि स्कीमा का पालन किया गया है, जो ओपी का हिस्सा था।

मुझे libxmljs मिला है जो आप ढूंढ रहे हैं के लिए सबसे अच्छा समाधान है। आप पार्स कर सकते हैं, बुनियादी स्ट्रिंग को मान्य कर सकते हैं, साथ ही विस्तृत संरचना भी कर सकते हैं।

एक XML वाक्यविन्यास के लिए जाँच की तरह कुछ के साथ किया जाएगा का एक उदाहरण:

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