大家好:我必须将我的数据,实际上是整个域模型结构导出到一个正式的 xml 文件中。有谁知道我可以用来将 xml 模式映射到我的 .NET 对象模型的可视化工具?
4 回答
将对象导出到 xml 的最简单方法是使用<Serializalbe>
属性标记每个类。然后调用XmlSerializer.Serialize()
。
您还可以使用 .xml 将 xml 重新导入到您的对象中XmlSerializer.Deserialize()
。
如果您需要一个架构,那么您可以使用 xsd.exe 使用以下任一方式生成它:
- 类库本身:
xsd.exe myClassLibrary.dll
- 调用 XmlSerializer.Deserialize() 生成的 xml 文件:
xsd.exe myFile.xml
有关详细信息,请参阅xsd.exe和XmlSerializer的文档。
另一种方法很简单:您可以使用 xsd.exe 从 XSD 模式生成 .Net 数据绑定类模型。
但是在 .Net 中采用任意对象模型并将其序列化为 XML - 我什至不确定这是否可能。您的某些类型必然比您可以在 XML 中表示的类型更复杂。因此,从 XML 方面开始,似乎是必要的。
其他人指出了 Visual Studio 中的 XSD 支持。这有一个视觉设计器,但它不会映射到您的类 - 它可以创建强类型对象。
XMLSerialization 在某些情况下非常有用:1)数据传输(Web 服务)2)节省原型时间。我强烈建议不要将对象的直接 XML 序列化作为持久性机制(永久存储)。当您需要更改架构时,这将是痛苦的。是的,有理论上的解决方案,我从未见过它们在实践中很容易工作。我在维护(和重新设计)快速序列化解决方案时感到很痛苦,对此我有强烈的感觉:)
问题是为什么要导出域模型?这只是一个导出功能吗?如果是这样,序列化可能很棒。您可能找不到执行此操作的可视化工具。但是,创建带有类属性的正式、甚至漂亮的 XML 通常很容易。
我知道 .NET 框架中不支持这种情况。
我会开始研究反射,遍历所有类型及其成员,在 XML 中发出相应的描述。