convert-xml-to-csharp-classes/

来源:互联网 发布:办公软件的基础知识 编辑:程序博客网 时间:2024/06/13 05:57

refs:

https://dennymichael.net/2014/05/30/convert-xml-to-csharp-classes/comment-page-1/


Today I found a cool Visual Studio 2012/2013 functionality: you can paste an XML source as Classes, in fact creating all the object model to serialize and deserialize object with the xml format, all this without using xsd.exe tool.

Here’s the very simple steps:

1 – The most difficult step….. copy the xml source in the clipboard, something like CTRL+A and CTRL+C 

Image

Is ridiculous to add a screenshot, but I’ve got it, so why not!

2 – Create a new empy class file… no more screenshot please! ok here we go 

3 – Go to Edit -> Paste Special -> Paste XML As Classes, to paste the generated classes based on the source xml

Image

Image

Here’s the code I’ve used to test the deserialization:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.IO;
using System.Text;
using System.Xml.Serialization;
using ConsoleDump;
using ConvertXmlToCSharpClasses.Properties;
 
namespaceConvertXmlToCSharpClasses
{
    internalclass Program
    {
        privatestatic voidMain(string[] args)
        {
            TestSample1();
 
            TestSample2();
 
            Console.WriteLine("Press enter to exit the application...");
            Console.ReadLine();
        }
 
        privatestatic voidTestSample1()
        {
            varserializer = newXmlSerializer(typeof(library));
            varbuffer = Encoding.UTF8.GetBytes(Resources.Sample1);
            using(var stream = new MemoryStream(buffer))
            {
                varlibrary = (library)serializer.Deserialize(stream);
                library.book.Dump("Book");
                library.book.title.Dump("Book Title");
                library.book.author.Dump("Book Title");
            }
        }
 
        privatestatic voidTestSample2()
        {
            varserializer = newXmlSerializer(typeof(catalog));
            varbuffer = Encoding.UTF8.GetBytes(Resources.Sample2);
            using(var stream = new MemoryStream(buffer))
            {
                varcatalog = (catalog)serializer.Deserialize(stream);
                catalog.product.Dump("Product").catalog_item.Dump("Product Items")[0].size.Dump("Item Size")[0].color_swatch.Dump("Color Swatch");
            }
        }
    }
}

You can also download the test project.

4 – Enjoy your saved time

Image