2011-05-15 23 views
5

मैं एक HTML दस्तावेज़ में तत्व खोजने के लिए PHP में DOMDocument और DOMXPath का उपयोग कर रहा हूं। इस दस्तावेज़ में HTML इकाइयां हैं जैसे & nbsp; और मैं इन इकाइयों को XPath आउटपुट में संरक्षित करना चाहता हूं।एचओएमएक्सपाथ को एचटीएमएल इकाइयों का विस्तार करने से कैसे रोकें?

$doc = new DOMDocument(); 
$doc->loadHTML('<html><head></head><body>&nbsp;Test</body></html>'); 

$xpath = new DOMXPath($doc); 
$nodes = $xpath->query('//body'); 

foreach($nodes as $node) { 
    echo $node->textContent; 
} 

इस कोड को निम्नलिखित उत्पादन का उत्पादन (UTF-8):

[space]Test 

लेकिन मैं चाहते हैं यह करने के लिए:

&nbsp;Test 

शायद यह LibXML के साथ क्या करना है कि कुछ PHP आंतरिक रूप से उपयोग करता है, लेकिन मुझे कोई भी फ़ंक्शन नहीं मिला जो HTML इकाइयों को संरक्षित करता है।

क्या आपके पास कोई विचार है?

+2

'[space]' यूटीएफ -8 नहीं है। क्या आप वाकई यू +0020 हैं और यू +00 ए 0 नहीं हैं? – Alohci

+0

@Alohci: हाँ, आप सही हैं, यह U + 00A0 है। मैं बस स्पष्ट करना चाहता था कि आउटपुट को इकाई के बजाए व्हाइटस्पेस के साथ प्रदर्शित किया गया है। – chrisklaussner

+0

@ डिमिट्री: क्षमा करें, लेकिन यह एक XPath विशिष्ट प्रश्न है। यह एक XPath क्वेरी के आउटपुट के बारे में है। – chrisklaussner

उत्तर

4

XPath हमेशा XML दस्तावेज़ का प्रतिनिधित्व देखता है जिसमें इकाई संदर्भों का विस्तार किया गया है। इसे रोकने का एकमात्र तरीका एक्सएमएल दस्तावेज को प्रीप्रोसेस करना है, जो किसी इकाई द्वारा इकाई संदर्भों को प्रतिस्थापित नहीं किया जाएगा, उदाहरण के लिए &nbsp; से §nbsp; बदलना।

2

एक गैर-ब्रेकिंग स्पेस कैरेक्टर को &nbsp; या &#xA0;' -- the character is always provided to it as a character entity -- और # 160` के रूप में निर्दिष्ट किया गया था, तो एक XPath प्रोसेसर को पता नहीं है।

+0

मुझे नहीं लगता कि यह जवाब सही है। एक एक्सपीएथ प्रोसेसर इन्फोसेट पर काम नहीं करता है, यह एक्सपीएथ डेटा मॉडल (एक्सडीएम) पर काम करता है, जिसे इन्फोसेट के संदर्भ में परिभाषित किया जाता है। इंफोसेट अप्रत्याशित इकाई संदर्भ सूचना आइटम की उपस्थिति की अनुमति देता है। एक्सडीएम नहीं करता है। तो यह वास्तव में एक XPath मुद्दा है। –

+0

@ माइकल Kay: इस सुधार के लिए धन्यवाद। –

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