2008-08-26 17 views
12

मैं PHP में YouTube वीडियो टिप्पणियों के लिए अपना सी # कोड अनुवाद कर रहा हूं। ठीक से घोंसला टिप्पणी उत्तरों के लिए मुझे एक्सएमएल नोड्स को पुन: व्यवस्थित करने की आवश्यकता है। PHP में मैं DOMDocument और DOMXPath का उपयोग कर रहा हूं जो सी # एक्सएमएल दस्तावेज़ से निकटता से मेल खाता है। मुझे अपने अनुवाद में काफी दूर मिल गया है, लेकिन अब मैं डोमेलेमेंट के पैरेंट नोड को पाने पर फंस गया हूं। एक DOMElement में parent_node() प्रॉपर्टी नहीं होती है, केवल एक डोमोडोड उस प्रॉपर्टी को प्रदान करता है।डोमेलेमेंट के माता-पिता नोड का निर्धारण

यह निर्धारित करने के बाद कि एक टिप्पणी एक लिंक तत्व में "इन-उत्तर-टू" स्ट्रिंग में आधारित पिछली टिप्पणी का उत्तर है, मुझे उस टिप्पणी के नीचे इसे घोंसला करने के लिए अपने मूल नोड को प्राप्त करने की आवश्यकता है जवाब देने के लिए:

// Get the parent entry node of this link element 
$importnode = $objReplyXML->importNode($link->parent_node(), true); 

उत्तर

20

DOMElementDOMNode का एक उपवर्ग है, इसलिए यह parent_node संपत्ति है। बस $ domNode-> parentNode का उपयोग करें; पैरेंट नोड खोजने के लिए।

आपके उदाहरण में, $ importnode का मूल नोड शून्य है, क्योंकि इसे दस्तावेज़ में आयात किया गया है, और इसलिए अभी तक कोई अभिभावक नहीं है। माता-पिता होने से पहले आपको इसे किसी अन्य तत्व से जोड़ना होगा।

+4

डोमेलेमेंट डोमोडोड और 'डोमनेड :: पेरेंट नोड' बढ़ाता है, इसलिए यह संपत्ति भी डोमेलेमेंट पर उपलब्ध है। http://php.net/manual/en/class.domnode.php और http://php.net/manual/en/class.domelement.php – feeela

0

मुझे पूरा यकीन नहीं है कि आपका कोड कैसा काम करता है, लेकिन ऐसा लगता है कि आपके कोड में आपको एक छोटी सी त्रुटि है।

आपके प्रश्न में पोस्ट की गई लाइन पर आपके पास $link->parent_node() है, लेकिन पूरे कोड स्निपेट के उत्तर में आपके पास $link**s**->parent_node() है।

मुझे नहीं लगता कि s वहां होना चाहिए।

इसके अलावा, मुझे लगता है कि आपको $ link-> parentNode का उपयोग करना चाहिए, $ link-> parent_node() नहीं।