2013-05-07 17 views
8

शायद यह वास्तव में एक प्रोग्रामिंग सवाल नहीं है। लेकिन ...क्यों नोडलिस्ट संग्रह या Iterable का विस्तार नहीं करता है?

org.w3c.dom.NodeListjava.lang.Iterable इंटरफ़ेस का विस्तार क्यों नहीं है?

यह मेरे लिए इतना प्रतिद्वंद्वी लगता है। विशेष रूप से, क्योंकि प्रलेखन कहते हैं:

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

पुनश्च शुरू करने: उचित प्रशंसा पत्र के साथ अपने जवाब को वापस कृपया जहां लागू हो।

+6

क्योंकि डोम भयानक है। यह बहुत से 'Iterable' की भविष्यवाणी करता है, और मेरा अनुमान है कि यह "जावा-समानता" के संबंध में डब्ल्यू 3 सी विनिर्देश का सिर्फ एक पूर्ण सीधा "बंदरगाह" है, और कोई भी वास्तव में एपीआई बनाने के तरीके को जानने के लिए वापस जाने की परवाह नहीं करता है अच्छा और संगतता तोड़ना नहीं है। (यह भी देखें: 'कैलेंडर'।) – millimoose

+0

@ मिलिमोउज़ यह भयानक होगा - अगर सच है! क्या हमारे पास इसके लिए कोई सबूत है या क्या हम सिर्फ इस हिस्से का अनुमान लगा रहे हैं? मुझे इसके बारे में कहीं भी कोई दस्तावेज नहीं मिला। – zEro

+0

आप मानते हैं कि इस तरह के सबूत मौजूद हैं, लेकिन न तो जेडीके और न ही जावा को शुरुआत में खुले में विकसित किया गया था। यह वास्तव में यह पूछने का स्थान नहीं है कि आप जानना चाहते हैं कि क्यों लोगों का एक छोटा समूह, इनमें से कोई भी एसओ सदस्य नहीं है, एक कॉल कॉल साल और साल पहले किया गया था, या किसी ने हस्तक्षेप के समय में अन्यथा क्यों फैसला नहीं किया। आप यह देखने के लिए जेएसआर साइट को देखने का प्रयास कर सकते हैं कि कोई विशिष्ट एक्सएमएल से संबंधित प्रस्ताव हैं जिनके अस्वीकृति कारण हो सकते हैं: http://jcp.org/en/jsr/tech?listBy=1&listByType=tech। सबसे नज़दीक मुझे मिल सकता है जो कि जेडीओएम है जिसे किसी को भी देखभाल करने के दस साल बाद वापस ले लिया गया था। – millimoose

उत्तर

9

org.w3c.dom.NodeListIterable, जो जावा संस्करण 1.5 में पेश किया गया था पहले का है।

शायद यह संगतता कारणों के लिए अद्यतन नहीं किया गया था, लेकिन मेरे पास इसके लिए कोई संदर्भ नहीं है।

+0

ओह! यह सही जवाब की तरह लगता है।मैंने अभी जांच की है कि नोडलिस्ट वास्तव में जावा संस्करण 1.5 की भविष्यवाणी करता है जिसके दौरान Iterable पेश किया गया था। – zEro

+2

हालांकि एपीआई अपडेट नहीं करने के लिए ऐसी एक भयानक गलती! मैं असंगतता को शाप देने वाले लाखों डेवलपर्स को देख रहा हूं। – zEro

+2

मुझे यकीन है कि वे इसे अन्य कारणों से भी शाप देते हैं। यह वास्तव में भयानक एपीआई है, ठेठ डिजाइन-दर-समिति कुत्ता बकवास है। –

2

W3C केवल विनिर्देशों (XML, XSLT, डोम, आदि ...) को परिभाषित करने और किसी भी विशिष्ट भाषा या मंच के लिए एपीआई संरेखित करने के लिए कोशिश नहीं कर रहे हैं।

इसका एक दिशानिर्देश के रूप पारसर्स के डेवलपर के लिए इरादा एक उत्पाद इन पारसर्स का उपयोग करता है मौजूदा कोड के अनुरूप उत्पादन करने के लिए।

जब आप अपने आवेदन ढांचे का निर्माण, यह सब एपीआई तो आप कैसे एपीआई अलग भाषा में या विभिन्न प्लेटफार्मों पर पहुँचा जा सकता है नियंत्रित कर सकते हैं कॉल रैप करने के लिए सबसे अच्छा है।

जावा, जावास्क्रिप्ट, सी # या जो कुछ भी अपने का उपयोग कर, एक वर्ग \ उद्देश्य यह है कि API कॉल तक पहुँचने लपेटता पैदा करते हैं। जावास्क्रिप्ट में यह कोड क्रॉस-ब्राउज़र अनुपालन करते समय मदद करेगा, यदि आप कई प्लेटफार्मों के लिए अपना समाधान प्रकाशित करते हैं, तो आपको केवल अपने रैपर वर्ग को अपडेट करना होगा।

यहाँ एक उदाहरण नीचे, हालांकि, आप के रूप में कल्पना के रूप में आप चाहते हैं, प्राप्त कर सकते हैं विशिष्ट कार्यान्वयन प्रदान करने के लिए अधिभावी वंशज वर्गों के साथ अपने स्वयं के आवरण इंटरफेस और आधार वर्ग को परिभाषित है।

function XMLNode(xnode) { 
    this.xnode = xnode; 
} 

function getNodes(path, xnode) { 
    if (browseTYPE != IE) { 

     //Ordered SnapShot 
     if (xnode.evaluate)   
      fld = xnode.evaluate(path, xnode, null, 7, null); 
     else 
      fld = xnode.ownerDocument.evaluate(path, xnode, null, 7, null); 

     //We need a result wrapper here 
     if (fld != null) return new XMLSnapShotList(fld); 

    } else { 
     fld = xnode.selectSingleNode(path).childNodes; 

     //We need a result wrapper here 
     if (fld != null) return new XMLList(fld); 
    } 
    return null; 
} 

XMLNode.prototype.getNodes = getNodes; 
संबंधित मुद्दे

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