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

时间:2015-05-11 06:32:24

标签: c# xml xsd system.xml

我有一个extractProperty ["foo", "bar0"] (Object (fromList [("foo",Object (fromList [("bar1",String "foobar1"),("bar0",String "foobar0")]))])) ==> Just (String "foobar0") extractProperty ["foo", "bar0", "baz"] (Object (fromList [("foo",Object (fromList [("bar1",String "foobar1"),("bar0",String "foobar0")]))])) ==> Nothing 创建的对象模型,它有这个成员:

XSD:

xsd.exe

生成C#(删节)

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

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

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

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

那么如何创建适合XmlDocument使用的XmlAttribute实例?

1 个答案:

答案 0 :(得分:0)

事实证明,您可以使用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") }; 的虚拟实例来创建XML DOM组件,并且它可以正常工作:

$row = mysql_fetch_array($query) or die(mysql_error());