2012-03-08 9 views
8

मेरे पास List<> है जिसे मैंने फ़ाइल में लिखने में कामयाब रहा है। अब मैं एक ही फाइल को पढ़ने की कोशिश कर रहा हूं और इसे List<> पर लिख सकता हूं। क्या ऐसा करने का कोई तरीका है? क्या कोई मुझे शुरुआत के साथ मदद कर सकता है? उपयोगी होगा?XML फ़ाइल को कैसे पढ़ा जाए और सूची <> में कैसे लिखें?

+0

http://stackoverflow.com/questions/670563/linq-to-read-xml समान करने के लिए लिखता है प्रश्न, यू एक नज़र – AnarchistGeek

+0

प्रयास करें हो सकता था इस http://stackoverflow.com/questions/4084393/how-to-read-xml-file-to-a-dictionarystring-liststring-with-empty-strings- – PraveenVenu

उत्तर

9

मुझे लगता है कि सबसे आसान तरीका है XmlSerializer उपयोग करने के लिए है लगता है:

XmlSerializer serializer = new XmlSerializer(typeof(List<MyClass>)); 

using(FileStream stream = File.OpenWrite("filename")) 
{ 
    List<MyClass> list = new List<MyClass>(); 
    serializer.Serialize(stream, list); 
} 

using(FileStream stream = File.OpenRead("filename")) 
{ 
    List<MyClass> dezerializedList = (List<MyClass>)serializer.Deserialize(stream); 
} 
4

आप अपनी एक्सएमएल फाइल पढ़ने और इसे अपनी सूची में बांधने के लिए LINQ से XML का उपयोग कर सकते हैं।

http://www.mssqltips.com/sqlservertip/1524/reading-xml-documents-using-linq-to-xml/ इस लिंक के बारे में पर्याप्त जानकारी है।

यह कुछ ऐसा है जो मैंने पहले किया था; मुझे उम्मीद है यह मदद करेगा। मैं आप चाहते हैं बिल्कुल वही बात

public static List<ProjectMap> MapInfo() 
    { 

     var maps = from c in XElement.Load(System.Web.Hosting.HostingEnvironment.MapPath("/ProjectMap.xml")).Elements("ProjectMap") 
        select c; 
     List<ProjectMap> mapList = new List<ProjectMap>(); 

     foreach (var item in maps) 
     { 
      mapList.Add(new ProjectMap() { Project = item.Element("Project").Value, SubProject = item.Element("SubProject").Value, Prefix = item.Element("Prefix").Value, TableID = item.Element("TableID").Value }); 

     } 
     return mapList; 
    } 
3

एक आसान तरीका है

using System; 
using System.Linq; 
using System.Xml.Linq; 

public class Test 
{ 
    static void Main() 
    { 
     string xml = "<Ids><id>1</id><id>2</id></Ids>"; 

     XDocument doc = XDocument.Parse(xml); 

     List<string> list = doc.Root.Elements("id") 
          .Select(element => element.Value) 
          .ToList(); 


    } 
} 
7

आप इस कोशिश कर सकते हैं (का उपयोग करते हुए System.Xml.Linq)

XDocument xmlDoc = XDocument.Load("yourXMLFile.xml"); 
var list = xmlDoc.Root.Elements("id") 
          .Select(element => element.Value) 
          .ToList(); 
+0

लिंक से एक्सएमएल का उपयोग करने के लिए सहमत हैं लेकिन मैंने इन उदाहरणों का पालन किया http://www.dotnetcurry.com/linq/564/linq-to-xm एल-ट्यूटोरियल-उदाहरण। – Caverman

0

यदि आप सिंगलटन पैटर्न के साथ काम कर रहे हैं, तो यहां XML को पढ़ने का तरीका बताया गया है!

public static GenericList Instance { 

     get { 

       XElement xelement = XElement.Load(HostingEnvironment.MapPath("RelativeFilepath")); 
       IEnumerable<XElement> items = xelement.Elements(); 
       instance = new GenericList(); 
       instance.genericList = new List<GenericItem>{ }; 

       foreach (var item in items) { 

        //Get the value of XML fields here 
        int _id = int.Parse(item.Element("id").Value); 
        string _name = item.Element("name").Value; 

        instance.genericList.Add(
            new GenericItem() { 

             //Load data into your object 
             id = _id, 
             name = _name 
            }); 
        } 
      return instance; 
     } 
    } 

इस CRUD पहुँच को खोलता है, अद्यतन मुश्किल के थोड़े के रूप में यह एक्सएमएल

public void Save() { 

     XDocument xDoc = new XDocument(new XDeclaration("Version", "Unicode type", null)); 
     XElement root = new XElement("GenericList"); 
     //For this example we are using a Schema to validate our XML 
     XmlSchemaSet schemas = new XmlSchemaSet(); 
     schemas.Add("", HostingEnvironment.MapPath("RelativeFilepath")); 

     foreach (GenericItem item in genericList) { 

      root.Add(
       //Assuming XML has a structure as such 
       //<GenericItem> 
       // <name></name> 
       // <id></id> 
       //</GenericItem> 

       new XElement("GenericItem",       
         new XElement("name", item.name), 
         new XElement("id", item.id) 
       )); 
     } 
     xDoc.Add(root); 

     //This is where the mentioned schema validation takes place 
     string errors = ""; 
     xDoc.Validate(schemas, (obj, err) => { 
      errors += err.Message + "/n"; 
     }); 

     StringWriter writer = new StringWriter(); 
     XmlWriter xWrite = XmlWriter.Create(writer); 
     xDoc.Save(xWrite); 
     xWrite.Close(); 

     if (errors == "") 
     { 
      xDoc.Save(HostingEnvironment.MapPath("RelativeFilepath")); 
     } 
    } 
संबंधित मुद्दे