0
是否可以在XML Schema文件中引用C#项目中的类型?为了验证和智能影音意义上,我的意思是......在XML模式中引用C#类型?
可以说我有以下几点:
namespace Example
{
class myType
{ int test = 0; }
}
我将如何引用模式文件中的实例名称空间,这样我可以运用MyType作为一个元素类型?
是否可以在XML Schema文件中引用C#项目中的类型?为了验证和智能影音意义上,我的意思是......在XML模式中引用C#类型?
可以说我有以下几点:
namespace Example
{
class myType
{ int test = 0; }
}
我将如何引用模式文件中的实例名称空间,这样我可以运用MyType作为一个元素类型?
不直接。
虽然有两种方法可以做到这一点。
首先是将您的课程标记为Serializable
并使用XmlSerializer
将其序列化为XML。结合这一点,您还可以使用xsd.exe
为您的课程创建架构,并且可以将用作您的(其他)架构中的类型。可以使用XmlSerializer
来对该类型进行序列化和反序列化。
在一个有点相关的说明,如果你有一个方法要在捕捉XML(而不是数据类型或结构),可以延长一些XSLT与C#(或VB.NET,或JavaScript)代码。 MSDN有关于如何做到这一点的更多文档,其基本思想是使用XsltArgumentList
和AddExtensionObject
来添加该方法。也可以通过使用msxsl:script
直接在XSLT中完成此操作(有关该更多信息,请参见here)。
我只是想用XSD.EXE类似: “XSD d:\ somelib.dll /t:SomeNS.SubNS.SomeClass” 然而,似乎要经过每一个类,如果我没有默认构造函数(主要是故意设计),整个过程失败。任何方式让它忽略反射错误? –
要序列化/反序列化一个类,它必须有一个可公开访问的默认(无参数)构造函数 - 即使该构造函数不做任何事情,也不会在其他地方使用。您应该能够使用XSD.exe的/ t参数将其限制为您想要序列化的类型。 –
啊,好的。谢谢!现在我为每个类实现了默认构造函数,这很好。 –