2008-09-26 11 views
6

क्या एक्सएमएल एसक्यूएल सिंटेक्स से पूछताछ के लिए कोई ढांचा है, मैं नोड सूचियों के माध्यम से पुनरावृत्ति की गंभीरता से टायर करता हूं। एसक्यूएल की तरह एक्सएमएल क्वेरी?


या यह सिर्फ इच्छापूर्ण सोच है (यदि बेवकूफ नहीं है) और निश्चित रूप से संभव नहीं है क्योंकि एक्सएमएल एक संबंधपरक डेटाबेस नहीं है?

उत्तर

13

XQuery और XPath ... XQuery अधिक है जो आप खोज रहे हैं यदि कोई SQL संरचना वांछनीय है।

+0

कूल, मैं XPath का उपयोग कर रहा हूं क्योंकि यह PHP के SimpleXML में कार्यान्वित किया गया है, मुझे लगता है कि मैंने अभी XQuery को याद किया है। –

+0

Xquery XPath लागू करता है, हालांकि यह शैतान का काम है। – Tarski

2

नेट फ्रेमवर्क LINQ को ऐसा करने के लिए प्रदान करता है या आप XML फ़ाइलों से डेटा लोड करने के लिए .Net System.Data नेमस्पेस का उपयोग कर सकते हैं।

तुम भी प्रश्न हैं टेबल के बीच में मिलती है कि, आदि

उदाहरण के लिए बना सकते हैं, System.Data.DataTable एक ReadXml() तरीका प्रदान करता है।

2

आप LINQ को XML में आज़मा सकते हैं, लेकिन यह भाषा अज्ञेयवादी नहीं है।

+0

न ही एसक्यूएल में यह मेरा विश्वास है? – Meff

+0

LINQ भाग .NET है, इसलिए आप किसी भी भाषा का उपयोग सीएलआर कंपाइलर –

0

SQL सर्वर 2005 XML DML का समर्थन करता है इसके मूल xml डेटा प्रकार पर।

1

XQuery एक कार्यात्मक भाषा है जो SQL के सबसे नज़दीक है। XPath दस्तावेज़ के भीतर नोड का पता लगाने के लिए एक संकेत है जिसे एक्सएसएलटी और एक्सक्वियर के हिस्से के रूप में उपयोग किया जाता है।

एक्सएमएल डेटाबेस जैसे MarkLogic एक्सएमएल डेटा के लिए एक्सक्वियर इंजन के रूप में कार्य करता है, उतना ही रिलेशनल डेटाबेस संबंधित डेटा के लिए एसक्यूएल इंजन के रूप में कार्य करता है।

+0

एसक्यूएल सर्वर और ओरेकल समर्थन XQuery के साथ भी कर सकते हैं। – tuinstoel

0

XQuery निश्चित रूप से आगे बढ़ने का तरीका है। एक्सएमएल डेटाबेस जैसे eXist और MarkLogic द्वारा इसका उपयोग किया जाता है।

जावा दुनिया में फ्लैट फ़ाइलों पर XQuery चल रहा है, सबसे विशेष रूप से Saxon

नेट के लिए के लिए कई समाधान देखते हैं, वहाँ इतना उपलब्ध नहीं है। माइक्रोसॉफ्ट के पास XQuery लाइब्रेरी थी, हालांकि इसे .NET 2 से खींचा गया था और कभी भी इसका पुनरुत्थान नहीं हुआ है। XQSharp एक मूल .NET विकल्प है, हालांकि वर्तमान में केवल एक कमांड लाइन संस्करण जारी किया गया है।

1

यह आपके द्वारा हल की जा रही समस्या पर निर्भर करता है। यदि एक्सएमएल फ़ाइल बहुत बड़ी है, तो कभी-कभी एसएक्स पार्सर्स जैसे कुछ नोड द्वारा फ़ाइल नोड को पार करने के लिए उपयोग करने की आवश्यकता होती है, या आप आउटऑफमेमरी एक्सेप्शन प्राप्त करेंगे या आपके कंप्यूटर पर वर्चुअल मेमोरी भी चलाएंगे।

लेकिन, अगर एक्सएमएल फ़ाइल की उम्मीद आकार अपेक्षाकृत छोटा है, तो आप बस Linq की तरह कुछ का उपयोग कर सकते, यह भी देखना मेरी answer - यहाँ मैं समझाने की कोशिश की, कैसे नोड्स के माध्यम से गुजरने बहुत पसंद उपज वापसी निर्माण के साथ आसान बनाने के लिए

+0

मैं बस इसी तरह की समस्या में भाग गया, मुझे 300 मेगापिक्सल एक्सएमएल फाइलों में एमएसएक्सएमएल 6 पढ़ना है और रैम के एक गिग के ऊपर उपयोग करना है। सौभाग्य से यह win2k के साथ काम किया और मुझे केवल बहुत छोटी पेज फाइलों के साथ वीएम के साथ कुछ समस्याएं थीं। मुझे लगता है कि यील्ड रिटर्न काम करेगा, लेकिन दुर्भाग्य से मैं सभी .NET हॉटनेस के लिए डेल्फी प्रोग्रामर और एसओएल हूं। –

संबंधित मुद्दे