C# .net(C)中的Xml序列化和模式
以下问题涉及用于数据交换的.net类型库的XML序列化/反序列化和架构验证 第一个问题,如果我有一个自定义的xml名称空间,那么我需要添加一个C# .net(C)中的Xml序列化和模式,c#,.net,xml,serialization,C#,.net,Xml,Serialization,以下问题涉及用于数据交换的.net类型库的XML序列化/反序列化和架构验证 第一个问题,如果我有一个自定义的xml名称空间,那么我需要添加一个 [XmlRoot(Namespace = "http://mydomain/mynamespace")] 给我图书馆的每一个班级。或者有没有办法将此名称空间定义为整个程序集的默认名称空间 第二个问题,总是添加名称空间背后有什么原因吗 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:
[XmlRoot(Namespace = "http://mydomain/mynamespace")]
给我图书馆的每一个班级。或者有没有办法将此名称空间定义为整个程序集的默认名称空间
第二个问题,总是添加名称空间背后有什么原因吗
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
即使没有对任何名称空间的实际引用?我只是觉得它们给生成的xml增加了噪音。是否有一种方法可以删除它们,并且在生成的xml中只有自定义名称空间
第三个问题,是否有工具支持模式定义的生成,例如为程序集的所有公共[Serializable]类生成,以及根据可用的特定模式验证xml
如果有,您会推荐W3C或RELAX NG的XML模式吗?1只能在类/结构/接口级别或返回值上设置XmlRoot。所以不能在程序集级别使用它。您要查找的是,但我相信只有XamlWriter才使用 2如果您担心混乱,应该避免使用xml。格式良好的xml充满了混乱。我相信有一些方法可以与序列化程序生成的xml交互,但不能直接与XmlSerializer交互。您可以更好地控制类生成的XML
3可以用来为POCO生成模式,我相信我一直都是手工编写的;我可能很快就会用这个来写很多东西,tho 1 XmlRoot只能在类/结构/接口级别或返回值上设置。所以不能在程序集级别使用它。您要查找的是,但我相信只有XamlWriter才使用 2如果您担心混乱,应该避免使用xml。格式良好的xml充满了混乱。我相信有一些方法可以与序列化程序生成的xml交互,但不能直接与XmlSerializer交互。您可以更好地控制类生成的XML
3可以用来为POCO生成模式,我相信我一直都是手工编写的;我可能很快就会用这个来写很多东西,tho 只需添加-xsi etc在后面的值上支持xsi:nil之类的东西-这是一种众所周知的可空值模式。它只需向前写入流,不知道何时写入第一位是否需要nil,因此,它假设不必要地编写一次要比多次使用完整的名称空间要好。只需添加一点,xsi等在以后的值上支持诸如xsi:nil之类的内容,这是一种众所周知的可空值模式。它只需向前写入流,并且它不知道何时写入第一位是否需要nil,因此它假定不必要地写入一次流要比多次使用完整名称空间要好。Tools, -xsd.exe,命令行如下
xsd /c /n:myNamespace.Schema.v2_0 myschema_v2_0.xsd
我将模式放在一个单独的项目中
如果存在多个模式,或者您希望完全支持模式功能DateTimes(带偏移量、正/负小数)和跨平台生成,则此选项非常有用。工具,
-xsd.exe,命令行如下
xsd /c /n:myNamespace.Schema.v2_0 myschema_v2_0.xsd
我将模式放在一个单独的项目中
如果存在多个模式,或者您希望完全支持模式功能DateTimes和偏移量、正/负小数、以及跨平台生成,则此选项非常有用