从XML生成类

时间:2011-11-03 12:42:22

标签: c# xml class generator

一开始我想确认我是C#的新手。我只是在AVR ANSI C编程方面有一些经验。

我有一个练习(截止日期:2012年4月)。这不是我的功课,它是向我的朋友和老师展示我能做到的唯一方式。让我们来看一下锻炼的想法:

标题:类生成器WinForm 细节:我需要创建一个应用程序(基于System.Reflection),它将在c#中创建源代码(类)。该应用程序将允许用户添加随机XML文件并将其转换为c#类。最后,用户可以将其保存在某个地方。

我已经制作了一部分代码(在MS Visual Studio C#中),它允许用户选择并保存文件。

我认为应该这样: XML的例子(我知道这些例子写错了 - 但我不懂XML)

<pizza>
  <vezuvio>
     <prize> 10 </prize>
  </vezuvio>
</pizza>

转换为c#

class Pizza{
  contruct vesuvio{
    int prize = 10;
  }
} 

我需要您提供哪些帮助:

  1. 有关同一项目/应用程序的有用链接 - 我在该网站上搜索,但找不到有趣的内容。
  2. 主要表明应该如何运作的任何想法或糟糕的源代码。
  3. 什么是反序列化,它会有用吗?

4 个答案:

答案 0 :(得分:3)

从xml到C#编写通用映射是......复杂的,在许多情况下可能确实不可能。但是,如xsd之类的工具所示,可以从xml推断出一个模式。但是,作为一个更简单的选项,你可以看看用xslt解析xml,它可以简单地检查like-siblings(判断某些东西是个体还是列表等)。 IF 你很了解c#,xml和xslt,淘汰基本功能,但功能很简单。

复杂性还取决于您是否应该能够使用来自同一模式的任意数据填充对象模型:如果您只需插入XmlSerializer,那就太棒了!但是从头开始或从XmlReader(作为起点)编写完整的xml序列化引擎并非易事。

Xml也可能比你想象的复杂得多 - 有很多细微之处(尤其是xmlns命名空间)。

答案 1 :(得分:0)

作为一个起点,.NET附带Xsd.exe,它可以从XML / XSD生成C#类。一旦获得了类,就可以从XML文件反序列化,将文件中的数据读入对象的属性。

答案 2 :(得分:0)

1)你不会直接链接到你需要的whar。搜索xml节点读取以及xml属性和节点名称。 Xquery路径。 2)如果你采取增量方法首先找到根节点,然后将其写入源文件等等3)我不认为xml searlization对你没有多大帮助

答案 3 :(得分:0)

尚未做好这项工作的最佳工具是SimpleXmlToCode

这项工作做得很好。它不需要任何XSD或任何东西。直接XML到POCO类。