1

Here I have a scenario that Create xml file dynamically and it should be serialisable. xml is like:

<person>
    <personaldata>
        <name>gopi</name>
        <lastname>ch</lastname>
    </personaladata>
    <Educationaladata>
        <Graduation>b.tech</graduation>
        <designation>Engineer</designation>
    </educationaldata>
</person>

person class has name, lastname, designation, graduation and properties

I tried this

public string CreateXmlObject(Person objPerson)    
{
    var objXmlDocument = new XmlDocument();
    var objXpath = objXmlDocument.CreateNavigator();
    var objXmlSeialiser = new XmlSerializer(objPerson.GetType());
    using (var xs = objXpath.AppendChild())
    {
        objXmlSeialiser.Serialize(xs, objPerson);
    }
    return objXmlDocument.OuterXml;
}

My Problem is I have to read Specific data from Xml And Update Specific data to Xml . I want to read only Personaldata when i update, update should only apply to Personaldata Not Otherdata

2
  • Load the xml using a XDocument and then access the personaldata using XDocuments Descendent method. Commented Dec 8, 2015 at 6:10
  • Plus, the posted xml is invalid. Commented Dec 8, 2015 at 6:17

3 Answers 3

3

Try xml linq

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string name = "gopi";
            string lastname = "ch";
            string graduation = "b.tech";
            string designation = "Engineer";

            XElement personalData = new XElement("person", new XElement[] {
                new XElement("personaldata", new XElement[] {
                    new XElement("name", name),
                    new XElement("lastname", lastname)
                }),
                new XElement("Educationadata", new XElement[] {
                    new XElement("Graduation", graduation),
                    new XElement("designation", designation)
                })
            });

        }
    }
}
​
Sign up to request clarification or add additional context in comments.

Comments

2

Fisrt of all your XML is invalid, all the nodes should match their closing tags. Considering your person class looks something like this:-

public class Person
        {
            public string name { get; set; }
            public string lastname { get; set; }
            public string Graduation { get; set; }
            public string designation { get; set; }
        }

You can easily do it with LINQ-to-XML:-

Xdocument = XDocument.Load("XMLFilePath");
 List<Person> persons = (from person in xdoc.Descendants("person")
                         let personaldata = person.Element("personaldata")
                         let Educationaladata = person.Element("Educationaladata")
                         select new Person
                                {
                                  name = (string)personaldata.Element("name"),
                                  lastname = (string)personaldata.Element("lastname"),
                                  Graduation = (string)Educationaladata.Element("Graduation"),
                                  designation = (string)Educationaladata.Element("designation")
                                 }).ToList();

2 Comments

It is also one approach but file operations effects on performance But Thank You Response
@Gopikrishnach - In that case I didn't understood your question well. I thought you want to retrieve data from XML but it seems you want to create a XML file?
0

sSometing like -

var xml = XDocument.Load("xml path");
var personaldata = xml.Descendents("personaldata").FirstOrDefault();
if (data != null)
{
    foreach (var t in data.Descendants())
    {
        t.Value = "test";
    }                
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.