2012-02-01 10 views
6

का उपयोग कर एक HTML div InnerText टैग को प्रतिस्थापित करना मैं HTML दस्तावेज़ में हेरफेर और संपादित करने के लिए HTML Agility Pack का उपयोग कर रहा हूं। मैं इस जैसे क्षेत्र में पाठ बदलना चाहते हैं:एचटीएमएल डिवीजन पैक

<div id="Div1"><b>Some other text.</b><br></div> 

मैं इस निम्नलिखित कोड का उपयोग कर कर की कोशिश की है:

<div id="Div1"><b>Some text here.</b><br></div> 

मैं इस के भीतर होने का div पाठ अद्यतन करने के लिए देख रहा हूँ , लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है क्योंकि इनरटेक्स्ट संपत्ति केवल पढ़ने योग्य है।

HtmlTextNode hNode = null; 
hNode = hDoc.DocumentNode.SelectSingleNode("//div[@id='Div1']") as HtmlTextNode; 
hNode.InnerText = "Some other text."; 
hDoc.Save("C:\FileName.html"); 

मैं यहां क्या गलत कर रहा हूं? जैसा ऊपर बताया गया है, इनरटेक्स्ट केवल पढ़ने वाला फ़ील्ड है, हालांकि यह दस्तावेज में लिखा गया है कि यह "हो जाता है या सेट करता है"। क्या कोई वैकल्पिक तरीका है जिसके माध्यम से यह किया जा सकता है?

उत्तर

9

अभिव्यक्ति यहाँ प्रयोग किया जाता है: //div[@id='Div1'] का चयन करता है div है, जो एक HtmlTextNode नहीं है, इसलिए hNode चर अपने उदाहरण में null रखती है।

InnerText संपत्ति वास्तविक पढ़ने योग्य है, लेकिन HtmlTextNode में संपत्ति Text है जिसका उपयोग आवश्यक मूल्य निर्धारित करने के लिए किया जा सकता है। लेकिन इससे पहले आपको उस पाठ नोड को प्राप्त करना चाहिए। यह आसानी से इस अभिव्यक्ति के साथ किया जा सकता है: //div[@id='Div1']//b//text():

hNode = hDoc.DocumentNode 
    .SelectSingleNode("//div[@id='Div1']//b//text()") as HtmlTextNode; 
hNode.Text = "Some other text."; 
+0

वर्क्स एक आकर्षण की तरह! बहुत बहुत धन्यवाद... – Vivek