1

我有一个创建的对象模型,xsd.exe它有这个成员:

XSD:

<xs:element maxOccurs="unbounded" name="Foo">
    <xs:complexType>
        <xs:attribute name="bar" type="xs:string" />
        <xs:anyAttribute />
    </xs:complexType>
</xs:element>

生成的 C#(删节)

[XmlAnyAttribute]
public XmlAttribute[] AnyAttr { get... set... }

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

<Foo bar="baz" one="one" two="three" four="ten" />

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

那么如何创建一个XmlAttribute适用于 with的实例[XmlAnyAttribute]呢?

4

1 回答 1

0

事实证明,您可以使用一个虚拟实例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")
};
于 2015-06-19T23:04:44.303 回答