XSD.EXE任何类型都XmlElement的转换。 如何填写生成的属性?

我有一个XSD(这是所界定的标准RFC XSD http://web.rete.toscana.it/eCompliance/portale/dispatcher?from=rfc&pathname=%2Fapps%2Ftsf%2Fdata%2FeCompliance%2FeCRepository%2Frfc%2F0098.06%2F98.6.zip) 与

<complexType name="EventoClinico"> ... <sequence> ... <element name="Corpo" type="sisrt:Corpo" minOccurs="0" /> </sequence> ... </complexType>

和“CORPO”是

<complexType name="Corpo"> <sequence> <any namespace="##any" processContents="lax" /> </sequence> </complexType>

该xsd.exe工具在翻译CORPO元

public XmlElement Corpo;

属性。

问题是:

我怎样才能填补财产与我的自定义类:

public class Example{ public string AString {get;set;} }

如何设置EventoClinico.Corpo =新的例子(“字符串”);?

很多方面。

弗朗西斯。

这是在以下的职位提出了一个解决方案:

public XmlElement Convert<TObj>(TObj obj) { XmlSerializer s = new XmlSerializer(typeof(TObj)); StringBuilder sb = new StringBuilder(); XmlWriterSettings settings= new XmlWriterSettings(); //settings.ConformanceLevel=ConformanceLevel.Fragment; settings.OmitXmlDeclaration=true; XmlWriter w = XmlWriter.Create(sb, settings); s.Serialize(w, obj); return ToXmlElement(sb.ToString()); } public XmlElement ToXmlElement(string xml) { XmlDocumentFragment frag = new XmlDocument().CreateDocumentFragment(); frag.InnerXml = xml; return frag.FirstChild as XmlElement; }

--------------解决方案-------------

由于任何一个严格的定义类型的不是,XSD.EXE它产生的XmlElement。

http://msdn.microsoft.com/en-us/library/2w8zbwa2(v=vs.80).aspx

如果你想要把价值在那里,你将需要使用属性和子节点的集合。

你可以有你的测试类从XmlElement的继承和利用获取并设置其属性,以保持子节点,并同步与您的会员数据属性。

public class Example : XmlElement {

public string AString {
get { return GetAttribute("astring"); }

set { SetAttribute("astring", value); }
}

}

嗯...这似乎出错了的模式,我觉得TYPE =“sisrt:CORPO”应和TYPE =“CORPO”(因为它定义为<复杂类型名称=“CORPO”>)?

另外,如果EventoClinico和CORPO在不同的xsd文件的定义,您可能需要使用<XS:包括的schemaLocation =“anotherfile.xsd”/>指令

分类:C# 时间:2014-02-09 人气:0
本文关键词: 系列化,XSD.EXE,任何
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.447 (s). 10 q(s)