2012-02-11 13 views
5

से एक HTMLElement के सभी गुण मैं डोम का उपयोग कर traversing कर रहा हूँ प्राप्त करने के लिए:कैसे WebBrowser घटक

webBrowser.Document.Body.Parent.Children 

मैं एक विशिष्ट HTMLElement की सभी विशेषताओं प्राप्त करना चाहते हैं। हालांकि, HTMLElement में अभी getAttribute विधि है। मैं htmlelement.attributes[n] जैसे कुछ और ढूंढ रहा हूं। क्योंकि मैं पहले से ही गुणों को नहीं जानता।

उत्तर

2

उपयोग कर सकते हैं wbMain अपने WebBrowser1 नियंत्रण है, तो निम्न करें।

सबसे पहले, आपको अपने तत्व को रेफरी करने की आवश्यकता है, मान लें कि आप अपने पृष्ठ के पहले <A> लिंक तक पहुंचना चाहते हैं, यदि आप चाहें तो आप सभी के माध्यम से लूप कर सकते हैं।

यह वीबी में है, लेकिन सी # में यह वही प्रकार है, बस अलग वाक्यविन्यास।

Dim i As Integer 
Dim aElement As HTMLAnchorElement = wbMain.Document.All.getElementByTagName("A")(0) 

For i = 0 To aElement.attributes.length - 1 
    MsgBox aElement.attributes.item(i).name & "=" & aElement.attributes.item(i).value 
Next i 

हो जाएगा ताकि पाश सभी विशेषताओं के माध्यम से और एक name=value प्रारूप में एक MsgBox में यह प्रदर्शित करते हैं।

यदि आप नाम (विशेषता नाम) द्वारा इसे पुनः प्राप्त करना चाहते हैं तो बस लिंक से लक्ष्य विशेषता मान को पुनः प्राप्त करने के लिए aElement.getAttribute("target") का उपयोग करके कॉल करें।

यदि आप पुष्टि करना चाहते हैं कि आपको सही वस्तु/तत्व मिला है, तो केवल उस तत्व के लिए पूर्ण HTML कोड प्राप्त करने के लिए aElement.outerHTML करें।

चूंकि मैं प्री.NET संस्करण का उपयोग कर रहा हूं, इसलिए HTMLAnchorElement से IHTMLAnchorElement से घोषणा को बदलने में संकोच न करें अगर यह आपको परेशानी देता है, तो निश्चित रूप से, यदि आप किसी पृष्ठ पर सभी तत्वों के माध्यम से जाना चाहते हैं तो आप केवल आईएचटीएमलेमेंट का उपयोग कर सकते हैं, तो आपको केवल एक पृष्ठ पर पहले तत्व के लिए wbMain.Document.All (0) करना होगा, या लूप तक। सभी। लम्बाई - 1 सभी के माध्यम से जाने के लिए। याद रखें कि क्या आप नेस्टेड फॉर लूप का उपयोग कर रहे हैं, मैं दो बार उपयोग न करें, उनमें से किसी एक के लिए जे का उपयोग करें :)।

मुझे बताएं कि क्या यह आपके प्रश्न का उत्तर देता है या यदि आपकी समस्या के साथ आपकी सहायता करने के लिए मैं और कुछ कर सकता हूं।

2

आप एचटीएमएल दस्तावेज़ पार्स करने के लिए उपयोग कर सकते हैं HtmlAgilityPack r में यू मामले यू

var doc = new HtmlAgilityPack.HtmlDocument(); 
    doc.Load(FileName); 
    var node = doc.DocumentNode.SelectNodes("//NameofHtmlTag")[0]; 
    foreach (HtmlAgilityPack.HtmlAttribute attri in node.Attributes) 
    { 
     //iterate through attributes 
    }  
+0

आपकी प्रतिक्रिया के लिए धन्यवाद, लेकिन इस मामले में मुझे आईई को दस्तावेज़ को पार करने के तरीके को संरक्षित करना होगा। इसी कारण से, मैं एचएपी का उपयोग नहीं कर सकता। मैं सबसे खराब मामले में HTMLElement या अप्रबंधित कोड का उपयोग कर समाधान ढूंढ रहा हूं। – Devela

+0

@Deveta HTMLAgilityPack बुरा है, मैं इसका उपयोग करने की अनुशंसा नहीं करता। –

+0

@ डेवेल, क्यों नहीं? – as9876