2012-02-07 22 views
8

के आंतरिक टेक्स्ट को प्रतिस्थापित करना सबसे पहले यह सी # है। मैं एनएचएस में सहयोगियों के एक छोटे समूह के लिए एक इंटरनेट डैशबोर्ड बना रहा हूं। नीचे एक उदाहरण xml फ़ाइल है जिसमें मुझे आंतरिक टेक्स्ट बदलने की आवश्यकता है। मुझे एक विशिष्ट तत्व को प्रतिस्थापित करने की आवश्यकता है उदाहरण के लिए "कार्यशाला 1।" चूंकि हमारे पास कुछ कार्यशालाएं हैं, इसलिए मैं एक सामान्य लेखक का उपयोग नहीं कर सकता क्योंकि यह XML दस्तावेज़ पर सभी जानकारी को नीचे दिए गए कोड के साथ बदल देगा।एक्सएमएल नोड/तत्व

<?xml version="1.0" ?> 
    <buttons> 
     <workshop1>hello</workshop1> 
     <url1>www.google.co.uk</url1> 

मैं एक स्विच मामले उपयोग कर रहा हूँ एक विशिष्ट कार्यशाला जहां नाम बदल सकते हैं और कार्यशाला का URL जोड़ सकते हैं का चयन करने के लिए और नीचे इस कोड का उपयोग पूरे दस्तावेज़ की जगह लेगा।

public void XMLW() 
    { 
     XmlTextReader reader = new XmlTextReader("C:\\myXmFile.xml"); 
     XmlDocument doc = new XmlDocument(); 

     switch (comboBox1.Text) 

     { 
      case "button1": 


       doc.Load(reader); //Assuming reader is your XmlReader 
       doc.SelectSingleNode("buttons/workshop1").InnerText = textBox1.Text; 
       reader.Close(); 
       doc.Save(@"C:\myXmFile.xml"); 
       break; 


     } 


    } 

तो बस स्पष्ट करने के लिए मैं XML दस्तावेज के माध्यम से खोज करने के लिए मेरी सी # कार्यक्रम तत्व "Workshop1" खोजने के लिए और एक पाठ बॉक्स से पाठ के साथ innerText की जगह चाहते हैं। और पूरे दस्तावेज़ को एक नोड के साथ बदले बिना इसे सहेजने में सक्षम हो। तलाश के लिए धन्यवाद।

+2

क्या कोई कारण है कि आप 'XDocument' या कम से कम' XmlDocument' API का उपयोग नहीं कर रहे हैं? यदि आपको * विशाल * एक्सएमएल फाइलों को संसाधित करना है तो आप आमतौर पर केवल 'XmlReader'/'XmlWriter' का उपयोग करते हैं। –

+0

ठीक है मैं सी # में एक नौसिखिया हूँ। तो सामान्य प्रोग्राम चलाने के लिए मैं एक साथ कोड को दबा रहा हूं और फिर जब मैं इसे देख सकता हूं तो मैं इसे और अधिक कुशल बनाने के लिए कोड बदल सकता हूं। कम से कम इस तरह से मैं चीजों को करने और दोनों के फायदे समझने के बदसूरत और साफ तरीके के बीच अंतर सीख सकता हूं। हालांकि आपके मार्गदर्शन के लिए धन्यवाद, मैं अब XMLReader/XMLWriter का उपयोग करने के लिए देखता हूं। – Marshal

+0

मेरी सलाह 'XmlReader'/'XmlWriter' का उपयोग नहीं करना था ... –

उत्तर

10

XmlDocument और XPath का उपयोग करते हुए आप इस

XmlDocument doc = new XmlDocument(); 
doc.Load(reader); //Assuming reader is your XmlReader 
doc.SelectSingleNode("buttons/workshop1").InnerText = "new text"; 

कर सकते हैं आप doc.Save का उपयोग फ़ाइल भी बचाने के लिए कर सकते हैं।

MSDN पर XmlDocument के बारे में और पढ़ें।

संपादित

दस्तावेज़ को बचाने के लिए इस

doc.Save(@"C:\myXmFile.xml"); //This will save the changes to the file. 

आशा इस मदद करता है।

+0

मुझे लगता है कि यह काम कर रहा है। अब एकमात्र मुद्दा यह है कि यह मुझे डॉक्टर को बचाने नहीं देगा। मैं "डॉक्टर। सेव;" का उपयोग कर रहा हूँ हालांकि यह एक त्रुटि के साथ आ रहा है ** "केवल असाइनमेंट, कॉल, वृद्धि, कमी, और नए ऑब्जेक्ट एक्सप्रेशन को कथन के रूप में इस्तेमाल किया जा सकता है।" ** क्या ऐसा इसलिए है क्योंकि मैं XMLWriter का उपयोग नहीं कर रहा हूं? या? मैं इस कार्यक्रम पर इतने लंबे समय से काम कर रहा हूं कि शायद मैं मूर्ख हूं। यदि आप ऊपर देखते हैं तो आप इसे देख सकते हैं। – Marshal

+0

कृपया मेरा अद्यतन उत्तर जांचें। –

+0

अब यह दिखाने के लिए उपरोक्त कोड संपादित करें कि यह काम कर रहा है और भविष्य के उपयोगकर्ताओं के लिए संदर्भ के रूप में। अमर पालसपुर के लिए धन्यवाद। – Marshal