C# 序列化XSD.exe创建的对象模型。如何设置XmlAnyAttribute值

C# 序列化XSD.exe创建的对象模型。如何设置XmlAnyAttribute值,c#,xml,xsd,system.xml,C#,Xml,Xsd,System.xml,我有一个由xsd.exe创建的对象模型,其中包含以下成员: XSD: 反序列化很好,当我加载如下XML文件时,会填充此属性: <Foo bar="baz" one="one" two="three" four="ten" /> 问题是,如何序列化?我不能简单地设置fooInstance.AnyAttr=new XmlAttribute[],然后创建每个XmlAttribute对象进入AnyAttr集合,因为XmlAttribute构造函数是内部的,只能由XmlDocument.Cr

我有一个由xsd.exe创建的对象模型,其中包含以下成员:

XSD:

反序列化很好,当我加载如下XML文件时,会填充此属性:

<Foo bar="baz" one="one" two="three" four="ten" />
问题是,如何序列化?我不能简单地设置fooInstance.AnyAttr=new XmlAttribute[],然后创建每个XmlAttribute对象进入AnyAttr集合,因为XmlAttribute构造函数是内部的,只能由XmlDocument.CreateAttribute创建。但是,在当前上下文中没有可用的XmlDocument实例


那么,我如何创建一个适合与[XmlAnyAttribute]一起使用的XmlAttribute实例呢?

事实证明,您可以使用XmlDocument的一个虚拟实例来创建XML DOM组件,它可以正常工作:

FooElement foo = new FooElement();
foo.bar = "baz";

XmlDocument dummy = new XmlDocument();
foo.AnyAttr = new XmlAttribute[] {
    dummy.CreateAttribute("one", "one"),
    dummy.CreateAttribute("two", "three"),
    dummy.CreateAttribute("four", "ten")
};

我发现您可以执行xmldattribute attr=newxmldocument.CreateAttributename;属性值=此处的内容;但是,如果属性来自另一个名称空间(在我的例子中是这样的),这是不够的。如果您找到解决方案,请进行更新。@Chris我使用了XmlDocument的一个虚拟实例,该实例对我有效,因为我的XML文件只有一个默认模式。对不起,我不能再帮你了。
<Foo bar="baz" one="one" two="three" four="ten" />
FooElement foo = new FooElement();
foo.bar = "baz";

XmlDocument dummy = new XmlDocument();
foo.AnyAttr = new XmlAttribute[] {
    dummy.CreateAttribute("one", "one"),
    dummy.CreateAttribute("two", "three"),
    dummy.CreateAttribute("four", "ten")
};