您的代码有两个属性
Foo
据我所知,您在这里尝试关联一个名称空间:
[XmlRootAttribute(Namespace="http://schemas.datacontract.org/2004/07/JezNamespace",
IsNullable=false)]
[XmlTypeAttribute(AnonymousType=true,
Namespace="http://schemas.datacontract.org/2004/07/JezNamespace")]
第一个简单地被忽略,因为在您的场景中
福
不是根元素。第二个名称空间并不像您想象的那样——它中的名称空间是
XSD型
,而不是元素本身的命名空间。
要指定元素的名称和命名空间,您需要使用
XmlArrayItemAttribute
上
List<Foo>
父类的属性(哦,您将需要该父类):
public class FooParent
{
[XmlArrayItem(ElementName="Foo",
Namespace="http://schemas.datacontract.org/2004/07/JezNamespace")]
public List<Foo> Foos { get; private set; }
}
这将产生:
<FooParent>
<Foos>
<Foo xmlns="http://schemas.datacontract.org/2004/07/JezNamespace">
<Field1>hello</Field1>
<Field2>world</Field2>
</Foo>
...
或者,如果你不想要的话
Foos
中间元件,你可以更换
XmlArrayItem
在上面的代码中
XmlElement
. 在这种情况下,输出XML如下所示:
<FooParent>
<Foo xmlns="http://schemas.datacontract.org/2004/07/JezNamespace">
<Field1>hello</Field1>
<Field2>world</Field2>
</Foo>