【发布时间】:2015-05-11 06:32:23
【问题描述】:
我有一个由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 实例。
那么如何创建一个适合与[XmlAnyAttribute] 一起使用的XmlAttribute 实例?
【问题讨论】:
-
我发现你可以这样做
XmlAttribute attr = new XmlDocument().CreateAttribute("name"); attr.Value = "your_content_here";但如果属性来自另一个命名空间(在我的情况下是这样),这还不够。如果您找到解决方案,请进行更新。 -
@Chris 我使用了
XmlDocument的虚拟实例,因为我的 XML 文件有一个默认模式,所以它对我有用。很抱歉,我无法提供更多帮助。
标签: c# xml xsd system.xml