Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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
C# .net(C)中的Xml序列化和模式_C#_.net_Xml_Serialization - Fatal编程技术网

C# .net(C)中的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:

以下问题涉及用于数据交换的.net类型库的XML序列化/反序列化和架构验证

第一个问题,如果我有一个自定义的xml名称空间,那么我需要添加一个

[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和偏移量、正/负小数、以及跨平台生成,则此选项非常有用