gpt4 book ai didi

c# - XmlSerializer : Deserialize into XMLElement

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:14 25 4
gpt4 key购买 nike

我有这个 XML:

<A>
<B>hello</B>
<C>bye</C>
<D>
<E>111</E>
<F>222</F>
</D>
</A>

还有这个类

[XmlRoot("A")]
public class A
{
public string B { get; set; }
public string C { get; set; }
public System.Xml.XmlElement D { get; set; }
}

如您所见,我对将“D”建模为类不感兴趣。

我正在这样反序列化:

string xml = "<A><B>hello</B><C>bye</C><D><E>111</E><F>222</F></D></A>";
XmlSerializer serializer = new XmlSerializer(typeof(A));

using (StringReader reader = new StringReader(xml))
{
A a = (A)serializer.Deserialize(reader);

Console.WriteLine(a.D.OuterXml); // <-------
}

我当前的控制台输出是这样的:

<E>111</E>

...这是一种奇怪的行为,因为 <D>里面有两个项目,但反序列化器只保存第一个

问题:我应该怎么做才能得到这个控制台输出?

<E>111</E><F>222</F>

最佳答案

应用XmlAnyElement属性属性 D .

它的内部 Xml 将包含 <E>111</E><F>222</F> .
<E>111</E><F>222</F>作为 OuterXml 无效因为它缺少根元素。

[XmlRoot("A")]
public class A
{
public string B { get; set; }
public string C { get; set; }

[XmlAnyElement()]
public XmlElement D { get; set; }
}

关于c# - XmlSerializer : Deserialize into XMLElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52121628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com