Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual Xml到.net对象映射器_.net_Xml_Xml Serialization_Xsd_Mapping - Fatal编程技术网

Visual Xml到.net对象映射器

Visual Xml到.net对象映射器,.net,xml,xml-serialization,xsd,mapping,.net,Xml,Xml Serialization,Xsd,Mapping,大家好:我必须将我的数据,实际上是整个域模型结构导出到一个正式的xml文件中。有人知道我可以使用可视化工具将xml模式映射到.NET对象模型吗 另一种方法很简单:可以使用xsd.exe从xsd模式生成.Net数据绑定类模型 但是在.Net中使用任意对象模型并将其序列化为XML——我甚至不确定这是否可行。您的某些类型肯定比XML中所能表示的更复杂。因此,从XML方面开始似乎是必要的。据我所知,在.NET framework中不支持这种方案 我将开始研究反射,遍历所有类型及其成员,并以XML发出相应

大家好:我必须将我的数据,实际上是整个域模型结构导出到一个正式的xml文件中。有人知道我可以使用可视化工具将xml模式映射到.NET对象模型吗

另一种方法很简单:可以使用xsd.exe从xsd模式生成.Net数据绑定类模型


但是在.Net中使用任意对象模型并将其序列化为XML——我甚至不确定这是否可行。您的某些类型肯定比XML中所能表示的更复杂。因此,从XML方面开始似乎是必要的。

据我所知,在.NET framework中不支持这种方案


我将开始研究反射,遍历所有类型及其成员,并以XML发出相应的描述。

将对象导出为XML的最简单方法是使用
属性标记每个类。然后调用
XmlSerializer.Serialize()

您还可以使用
XmlSerializer.Deserialize()
将xml导入回对象中

如果需要架构,则可以使用xsd.exe通过以下任一方式生成它:

  • 类库本身:
    xsd.exe myClassLibrary.dll
  • 调用XmlSerializer.Deserialize()生成的xml文件:
    xsd.exe myFile.xml

  • 有关更多详细信息,请参阅文档。

    其他人指出了visual studio中的XSD支持。它有一个可视化设计器,但虽然它不会映射到您的类,但它可以创建强类型对象

    XMLSerialization在某些情况下非常有用:1)数据传输(web服务)2)在原型中节省时间。我强烈建议不要将对象的直接XML序列化作为持久性机制(永久存储)。当你需要改变你的模式时,这将是痛苦的。是的,有理论上的解决方案,我从来没有见过它们在实践中很容易奏效。我对维护(和重新设计)快速序列化解决方案感到非常痛苦,对此我有强烈的感受:)


    问题是为什么要导出域模型?这只是一个导出功能吗?如果是这样的话,序列化可能非常好。您可能找不到执行此操作的可视化工具。但通常很容易创建带有类属性的正式、甚至漂亮的XML。

    我理解。但是不像xsd->C#映射,它是一个已解决的问题,C#->xsd似乎问题更大,我不确定你会在这个方向上找到解决方案。没有理由不这样做。在设计时:反射提供接口,建立映射关联。在运行时:提供一个对象/对象,相同的反射在每个PropertyInfo上执行一个getvalue并构建Xml。