2010-08-30 22 views
6

मैं एक्सएमएल स्ट्रिंग चर में संग्रहीत किए गए:बदलें XML मूल तत्व नाम

<ItemMasterList><ItemMaster><fpartno>xxx</fpartno><frev>000</frev><fac>Default</fac></ItemMaster></ItemMasterList> 

यहाँ मैं <Masterlist> लिए एक्सएमएल टैग <ItemMasterList> बदलना चाहते हैं। मैं यह कैसे कर सकता हूँ?

+1

आप कोड का उपयोग कर रहे का एक सा पोस्ट करना चाहिए, वहाँ के रूप में एक से अधिक तरीका यह है। –

उत्तर

10

System.Xml.XmlDocument और उसी नामस्थान में संबंधित कक्षाएं यहां आपके लिए अमूल्य साबित होंगी।

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(yourString); 
XmlDocument docNew = new XmlDocument(); 
XmlElement newRoot = docNew.CreateElement("MasterList"); 
docNew.AppendChild(newRoot); 
newRoot.InnerXml = doc.DocumentElement.InnerXml; 
String xml = docNew.OuterXml; 
+0

क्या आप मुझे कोड प्रदान कर सकते हैं। – Pradeep

+1

एक उदाहरण शामिल करने के लिए संशोधित। –

+2

-1 - केवल पढ़ने के लिए संपत्ति। –

6

आप LINQ to XML का उपयोग एक्सएमएल स्ट्रिंग पार्स करने में कर सकते हैं, एक नया रूट बना सकते हैं और नया रूट करने के लिए बच्चे के तत्वों और मूल जड़ की विशेषताओं को जोड़ने:

XDocument doc = XDocument.Parse("<ItemMasterList>...</ItemMasterList>"); 

XDocument result = new XDocument(
    new XElement("Masterlist", doc.Root.Attributes(), doc.Root.Nodes())); 
+0

+1, रूट की विशेषताओं को बरकरार रखता है – Blorgbeard

0

XmlDocument तरह से उपयोग करके, आप यह कर सकते हैं इस प्रकार है (और पेड़ बरकरार रखने के लिए):, (आप आप सिर्फ स्ट्रिंग की जरूरत है हमें अन्यथा:

XmlDocument oldDoc = new XmlDocument(); 
oldDoc.LoadXml("<ItemMasterList><ItemMaster><fpartno>xxx</fpartno><frev>000</frev><fac>Default</fac></ItemMaster></ItemMasterList>"); 
XmlNode node = oldDoc.SelectSingleNode("ItemMasterList"); 

XmlDocument newDoc = new XmlDocument(); 
XmlElement ele = newDoc.CreateElement("MasterList"); 
ele.InnerXml = node.InnerXml; 

आप अब ele.OuterXml का उपयोग करते हैं वापस आ जाएगी है ई XmlDocument.AppendChild(ele) और आप XmlDocument वस्तु कुछ और उपयोग करने के लिए)

<MasterList> 
    <ItemMaster> 
    <fpartno>xxx</fpartno> 
    <frev>000</frev> 
    <fac>Default</fac> 
    </ItemMaster> 
</MasterList> 
0

विल एक से बताया के रूप में सक्षम हो जाएगा, हम इसे इस तरह से कर सकते हैं, लेकिन इस मामले में जहां InnerXml OuterXml के बराबर होती है के लिए निम्नलिखित समाधान बाहर काम करेंगे:

// Create a new Xml doc object with root node as "NewRootNode" and 
// copy the inner content from old doc object using the LastChild. 
        XmlDocument docNew = new XmlDocument(); 
        XmlElement newRoot = docNew.CreateElement("NewRootNode"); 
        docNew.AppendChild(newRoot); 
// The below line solves the InnerXml equals the OuterXml Problem 
        newRoot.InnerXml = oldDoc.LastChild.InnerXml; 
        string xmlText = docNew.OuterXml; 
6

मुझे पता है कि मुझे थोड़ा देर हो चुकी है, लेकिन मुझे यह जवाब जोड़ना है क्योंकि इस बारे में कोई भी नहीं जानता है।

XDocument doc = XDocument.Parse("<ItemMasterList><ItemMaster><fpartno>xxx</fpartno><frev>000</frev><fac>Default</fac></ItemMaster></ItemMasterList>");  
doc.Root.Name = "MasterList"; 

निम्नलिखित कौन देता है:

<MasterList> 
    <ItemMaster> 
    <fpartno>xxx</fpartno> 
    <frev>000</frev> 
    <fac>Default</fac> 
    </ItemMaster> 
</MasterList> 
+0

सरल, बिल्कुल नाम बदलता है, बाकी सब कुछ बरकरार रखता है। – Horia

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