简体   繁体   中英

XML Data management in .NET

I learning Xml data handling in .NET. I have the following XML format.

<BOOKS>
    <BOOK>
        <TITLE>book 1</TITLE>
        <AUTHOR>author 1</AUTHOR>       
        <PRICE>10.90</PRICE>
        <YEAR>1985</YEAR>
    </BOOK>
    <BOOK>
        <TITLE>book 2</TITLE>
        <AUTHOR>author 2</AUTHOR>       
        <PRICE>20.90</PRICE>
        <YEAR>1995</YEAR>
    </BOOK>
</BOOKS>

I need to learn to add/edit/delete new books to the XML file. Could you please guide me on what all classes to explore for these functionality. I find lot of classes like XmlDocument XmlTextWriter etc. Some sites suggest to use LINQ as well. I am confused as to which was to go. Is there any good material I can refer to understand this.

Here's an example of adding and removing elements using LINQ to XML:

// load the XML file into an XElement
XElement xml = XElement.Load(filePath);

// add a new book
xml.Add(
    new XElement("BOOK",
        new XElement("TITLE", "book 3"),
        new XElement("AUTHOR", "author 3"),
        new XElement("PRICE", 0.1),
        new XElement("YEAR", 2012)));

// remove a book that matches the desired title     
xml.Elements("BOOK").Where(x => x.Element("TITLE").Value == "book 1").Remove();

// to edit an existing element:
xml.Elements("BOOK")
    .Single(x => x.Element("TITLE").Value == "book 2") // take a single book
    .Element("AUTHOR").Value = "new author";  // and change its author field

Basically, use whatever you want, as long as you're comfortable with the technology. LINQ to SQL seems a bit easier, in my opinion.

If the file is reasonable small - ie not several MB in size - you should use either XmlDocument (the classic way) or XDocument (the new LINQ classes for XML processing). You will find lots of examples for both.
The following search results might give a hint as to when you should use which of those classes: http://www.google.com/search?hl=en&q=XmlDocument%20vs.%20XDocument . Personally, I would suggest using XDocument , because its API is easier to use.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM