2010-04-03 11 views
5

की पंजीकृत नामस्थानों की गणना करें मेरी परियोजनाओं में से एक के लिए, मैं XML दस्तावेज़ों को लोड और हेरफेर करने के लिए DOMDocument कक्षा का उपयोग कर रहा हूं।एक PHP DOMDocument ऑब्जेक्ट

मुझे दस्तावेज़ में उपयोग किए गए प्रत्येक नेमस्पेस को पुनर्प्राप्त करने की आवश्यकता होगी; हालांकि, मुझे नहीं पता कि मैं यह कैसे करूंगा। DOMDocument कक्षा में यूआरआई के नामस्थान उपसर्ग या नामस्थान उपसर्ग के यूआरआई प्राप्त करने के तरीके हैं, लेकिन मैंने वास्तव में पंजीकृत नामस्थानों को गिनने के लिए कुछ भी नहीं देखा है।

SimpleXML लाइब्रेरी में getNamespaces() विधि है। क्या DOMDocument के बराबर है?

उत्तर

6

डोम में ऐसा कोई कार्य नहीं है। मैंने सरल रूप से SimpleXml के स्रोत कोड पर देखा है और मुझे लगता है कि यह लोड किए गए एक्सएमएल को पुन: सक्रिय करता है और नामस्थान एकत्र करता है (मेरा सी बहुत खराब है)। सबसे आसान समाधान इस प्रयोजन के लिए SimpleXml में DOM डोम आयात करके नामस्थानों को लाने के लिए होगा। शायद इस तरह:

class DomUtils 
{ 
    public static function getNamespaces($dom) 
    { 
     $sxe = simplexml_import_dom($dom); 
     return $sxe->getNamespaces(); 
    } 

    public static function getDocNamespaces($dom) 
    { 
     $sxe = simplexml_import_dom($dom); 
     return $sxe->getDocNamespaces(); 
    } 
} 

आप XPath के साथ सभी नामस्थान प्राप्त करने का भी प्रयास कर सकते हैं।

+0

मैं एक बेहतर देखो बाद में आज इस देंगे: निम्नलिखित प्रश्न और उत्तर देखें। धन्यवाद :) – zneak