2012-10-16 5 views
7

मेरे पास एक xmldocument है कि मैं xml को लोड कर रहा हूं।मैं खाली पाठ को खाली xml तत्व में कैसे सम्मिलित करूं?

एक्सएमएल इस तरह दिखता है:

<Table1> 
    <buyer_id>0</buyer_id> 
    <buyername>CompanyA</buyername> 
    <address1>123 Simpsons Dr.</address1> 
    <address2/> 
    <city>Springfield</city> 
    <state>ST</state> 
    <postalcode>12345</postalcode> 
    <eaddress/> 
    <phone/> 
    <fax/> 
</Table1> 

मैं प्रत्येक कंपनी की प्रविष्टि को देखकर और उसके अनुसार innerText की स्थापना के माध्यम से पाशन कर रहा हूँ। मैं तत्वों है कि मानदंडों को पूरा में भीतरी पाठ सम्मिलित करने के लिए निम्नलिखित कोड का उपयोग कर रहा:

XmlDocument dom = new XmlDocument(); 
dom.LoadXml(xmlString); 

XmlNodeList elemList = dom.GetElementByTagName("Table1"); 
for(int i = 0; i < elemList.Count; i++) 
{ 
    if(dom.GetElementsByTagName("buyername").Item(i).InnerText.Contains("CompanyA") 
    { 
     dom.GetElementsByTagName("address1").Item(i).InnerText = "SomeInfo"; 
    } 
} 

उपरोक्त कोड, पता 1 का मान (123 सिम्पसंस डॉ) "SomeInfo" द्वारा प्रतिस्थापित किया जाएगा का उपयोग करना। मैं बजाय address2 तत्व में "SomeInfo" सम्मिलित करना चाहते हैं लेकिन जब मैं उपयोग करके देखें:

dom.GetElementsByTagName("address2").Item(i).InnerText = "SomeInfo"; 

मैं कोई त्रुटि मिलती है। मैं किसी भी तत्व में आंतरिक टेक्स्ट को सम्मिलित करने में सक्षम हूं जिसमें पहले से ही एक मान है लेकिन जब तत्व खाली है तो मैं नहीं कर सकता (जैसे <address2/>)। विचार?

उत्तर

3

उपयोग LINQ2XML यह गंदा पुराने जैसे अन्य XML API के लिए एक पूरी प्रतिस्थापन बेवकूफ XmlDocument

XElement doc=XElement.Load("yourXml.xml"); 

foreach(var elm in doc.Descendants("Table1")) 
{ 
if(elm.Element("buyername").Value=="CompanyA") 
elm.Element("address2").Value="SomeInfo"; 
} 
doc.Save("yourXml.xml"); 
+0

खुदाई गंदा पुराने बेवकूफ मेरे लिए काम किया। धन्यवाद! – user1750293

0

चेक अगर address2 एक्सएमएल टैग खाली है। यदि हां, तो अपने माता-पिता के पास जाएं और टैग को हटा दें फिर फिर उसी टैग को मूल्य के साथ जोड़ें। यदि नहीं, तो पता 2 में आंतरिक पाठ असाइन करें।

मुझे कोड की आवश्यकता होने पर मुझे बताएं।

0

एक्सएमएल के लिए LINQ में SetElementValue विधि का उपयोग करें:

XDocument doc = XDocument.Load(FilePath); //replace with xml file path 
IEnumerable<XElement> buyersList = doc.Descendants("Table1"); //get the table node. 
var ele = (from buyer in buyersList 
      where buyer.Element("buyername").Value == "CompanyA" 
      select buyer).SingleOrDefault(); 
ele.SetElementValue("address1", "SomeInfo"); 
ele.SetElementValue("address2", "SomeInfo"); 
doc.Save(FilePath); 

डेमो: http://ideone.com/Cf7YI

+0

linq के लिए चीयर्स .... – Anirudha

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