将多个xml节点值分配给c#中的一个类属性

时间:2012-09-12 11:51:33

标签: xml c#-4.0

Xml 1:

<Test><Anything>12345</Anything></Test>

Xml 2:

<Test><Anything1>test123</Anything1></Test>

Class Test
{
    [XmlElement("Anything" or "Anything" )]
    public string Sample { get; set; }
}

在我的情况下,任何一个xml都会来。所以我必须将Anything标签或Anything1分配给Sample属性。

这可能吗?

1 个答案:

答案 0 :(得分:0)

如果元素处于固定顺序,则可以执行此操作。有关详细信息,请参阅Deserialize multiple XML elements with the same name through XmlSerializer class in C#

否则,你不能这样做。如果你这样做:

public class Test
{
    [XmlElement("Anything")]
    [XmlElement("Foo")]
    public string Sample { get; set; }
}

...

Test test = new Test { Sample = "test" };
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Test));

它抛出一个InvalidOperationException说“有一个错误反映了类型'AntlrTest.Program.Test'”。问题是没有必要加载类型,它正在写出来。