我用C#代码更多或更少这样的序列化的对象到XML:
XmlSerializer xs1 = new XmlSerializer(typeof(YourClassName));
StreamWriter sw1 = new StreamWriter(@"c:\DeserializeYourObject.xml");
xs1.Serialize(sw1, objYourObjectFromYourClassName);
sw1.Close();
我想它序列是这样的:
<ns0:Header xmlns:ns0="https://mynamespace/">
<SchemaVersion>1.09</SchemaVersion>
<DateTime>2009-12-15T00:00:01-08:00</DateTime>
而是,它是这样做的:
<Header xmlns="https://mynamespace/">
<SchemaVersion xmlns="">V109</SchemaVersion>
<DateTime xmlns="">2010-03-08T18:21:09.100125-08:00</DateTime>
它是序列化的方式不与我曾计划使用XPath工作,不符合我的BizTalk架构。 本来我建立XSD.EXE类从BizTalk 2006年的架构,然后我用它的参数传递给WCF web服务。
这可能与一个选项叫做元素FormDefault =资格或不合格。 在BizTalk,我有我的模式设置为“Unqualfiied”,这是我想要的。
有没有办法为串行输出“不合格”的结果吗?
谢谢,
尼尔·沃尔特斯
更新:
在日期时间样本属性:
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public System.DateTime DateTime
{
get
{
return this.dateTimeField;
}
set
{
this.dateTimeField = value;
}
}
的BizTalk提供它称之为晋升(或区分)领域,其中使用XPath拉出各个元素的值。 我检查的BizTalk的XPath的一个叫StylusStudio工具,Biztalk'x的XPath没有用的xmlns =“”上述领域工作。
我的WCF web服务做的第一件事就是对象序列化到一个字符串(使用UTF-16的编码),并将其存储在SQL数据库中的XML列。 这是从那里我看到上面的XML样本与的xmlns =“”。
XPath的:
/*[local-name()='Header' and namespace-uri()='https://mynamespace/']/*[local-name()='DateTime' and namespace-uri()='']