2011-03-02 13 views
9

मैं निम्नलिखित तरीके से HTML स्रोत प्राप्त करने की कोशिश हो रही है:सी # में WebBrowser नियंत्रण के माध्यम से HTML स्रोत

webBrowser1.Document.Body.OuterHtml; 

लेकिन यह काम नहीं करता। उदाहरण के लिए, यदि मूल HTML स्रोत है:

<html> 
<body> 
    <div> 
     <ul> 
      <li> 
       <h3> 
        Manufacturer</h3> 
      </li> 
      <li><a href="/4566-6501_7-0.html? 

filter=1000036_3808675_100021_10194772_">Sony </a>(44)</li> 
      <li><a href="/4566-6501_7-0.html? 

filter=1000036_108496_100021_10194772_">Nikon </a>(19)</li> 
      <li><a href="/4566-6501_7-0.html? 

filter=1000036_3808726_100021_10194772_">Panasonic </a>(37)</li> 
      <li><a href="/4566-6501_7-0.html? 

filter=1000036_3808769_100021_10194772_">Canon </a>(29)</li> 
      <li><a href="/4566-6501_7-0.html? 

filter=1000036_2913388_100021_10194772_">Olympus </a>(21)</li> 
      <li class="seeAll"><a href="/4566-6501_7-0.html? 

sa=1000036&filter=100021_10194772_" class="readMore">See all manufacturers </a></li> 
     </ul> 
    </div> 
</body> 
</html> 

लेकिन webBrowser1.Document.Body.OuterHtml के उत्पादन में है:

<body> 
    <div> 
     <ul> 
      <li> 
       <h3> 
        Manufacturer</h3> 
       <li><a href="/4566-6501_7-0.html?filter=1000036_3808675_100021_10194772_">Sony </a>(44) 
        <li><a href="/4566-6501_7-0.html?filter=1000036_108496_100021_10194772_">Nikon </a>(19) 
         <li><a href="/4566-6501_7-0.html?filter=1000036_3808726_100021_10194772_">Panasonic 
         </a>(37) 
          <li><a href="/4566-6501_7-0.html?filter=1000036_3808769_100021_10194772_">Canon </a> 
           (29) 
           <li><a href="/4566-6501_7-0.html?filter=1000036_2913388_100021_10194772_">Olympus </a> 
            (21) 
            <li class="seeAll"><a class="readMore" href="/4566-6501_7-0.html?sa=1000036&amp;filter=100021_10194772_"> 
             See all manufacturers </a></li> 
     </ul> 
    </div> 
</body> 

के रूप में आप देख सकते हैं, कई </li> खो जाते हैं।

WebBrower में एचटीएमएल स्रोत प्राप्त करने का कोई तरीका सही तरीके से नियंत्रण है? ध्यान दें कि मेरे आवेदन में, मैं प्रत्येक नोड में समन्वय जानकारी जोड़ने के लिए WebBrowser का उपयोग करने का प्रयास करता हूं और इसके एचटीएमएल स्रोत को समन्वय जानकारी के साथ आउटपुट करता हूं जिसे नोड्स के गुणों के रूप में जोड़ा जाता है।

कोई मुझे एक पक्ष कर सकता है?

उत्तर

8

DocumentText या DocumentStream गुणों का उपयोग करने का प्रयास करें।

+0

हां, दस्तावेज़ टेक्स्ट और दस्तावेज़स्ट्रीम दोनों सही HTML स्रोत लौटा सकते हैं। लेकिन जब मैं डोम ट्री (myIHTMLElement.setAttribute()) में नोड्स में कुछ विशेषताओं को जोड़ता हूं, तो HTML स्रोत WebBrowser1 द्वारा प्राप्त होता है। डॉक्यूमेंटटेक्स्ट में कोई भी अतिरिक्त विशेषता नहीं है – Rockycqu

+0

@Rockucqu, 'InnerHtml' प्रॉपर्टी के बारे में क्या - क्या यह सही HTML लौटाता है? – VinayC

1

आप की कोशिश की WebBrowser1.DocumentText

+0

हां, WebBrowser1.DocumentText सही HTML स्रोत लौटाता है। लेकिन जब मैं डोम ट्री (myIHTMLElement.setAttribute()) में नोड्स में कुछ विशेषताओं को जोड़ता हूं, तो HTML स्रोत WebBrowser1 द्वारा प्राप्त किया जाता है। डॉक्यूमेंटटेक्स्ट में मेरे एप्लिकेशन में कोई भी अतिरिक्त गुण – Rockycqu

-2

इस पर एक नज़र डालें है। WebBrowser on MSDN

वैकल्पिक आप System.Net से Webclient.DownloadString इस्तेमाल कर सकते हैं (यह भी WebClient.DownloadStringAsync है ...) यहाँ वर्णन है: WebClient on MSDN

+1

नहीं है, मुझे प्रत्येक नोड में समन्वय जानकारी जोड़ने के लिए WebBrowser का उपयोग करने की आवश्यकता है और समन्वय जानकारी के साथ अपने एचटीएमएल स्रोत को आउटपुट करें जो नोड्स के गुणों के रूप में जोड़ा जाता है। वेबक्लिंट यह कार्य नहीं कर सकता – Rockycqu

3

आप सभी को धन्यवाद। मेरा अंतिम समाधान है: पहले, एचटीएमएल स्रोत प्राप्त करने के लिए body.outlineHtml का उपयोग करना। क्योंकि body.outlineHtml <li> और <td> के लिए एंड-टैग याद कर सकता है, इसलिए दूसरा चरण HTML स्रोत की मरम्मत के लिए साफ-सफाई का उपयोग कर रहा है। इनके बाद, हम त्रुटि के बिना HTML स्रोत प्राप्त कर सकते हैं

+1

अच्छा तो आगे बढ़ें और उत्तर के रूप में चिह्नित करें – V4Vendetta

0

यदि आप वेबब्रोसर नियंत्रण के पूरे HTML स्रोत को पकड़ना चाहते हैं तो इसका उपयोग करें - WebBrowser1.Document.GetElementsByTagName ("HTML")। आइटम (0) .उटरएचटीएमएल। यह निश्चित रूप से मानता है कि आपने HTML को सही रूप से स्वरूपित किया है और HTML टैग मौजूद है। यदि आप इसे केवल शरीर तक सीमित करना चाहते हैं तो स्पष्ट रूप से HTML टैग को बॉडी टैग में बदलें। "दस्तावेज़ टेक्स्ट" सेट करने के बाद आप किसी भी और सभी परिवर्तनों को पकड़ते हैं। क्षमा करें, मैं एक वीबी लड़का हूं, आवश्यकतानुसार रूपांतरित करें;)

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