如何动态添加XmlInclude属性

如何动态添加XmlInclude属性,第1张

如何动态添加XmlInclude属性

两种选择;最简单的(但给出奇数的xml)是:

XmlSerializer ser = new XmlSerializer(typeof(AList),    new Type[] {typeof(B), typeof(C)});

带有示例输出

<AList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <ListOfBs>    <B />    <B xsi:type="C" />  </ListOfBs></AList>

更为优雅的是:

XmlAttributeOverrides aor = new XmlAttributeOverrides();XmlAttributes listAttribs = new XmlAttributes();listAttribs.XmlElements.Add(new XmlElementAttribute("b", typeof(B)));listAttribs.XmlElements.Add(new XmlElementAttribute("c", typeof(C)));aor.Add(typeof(AList), "ListOfBs", listAttribs);XmlSerializer ser = new XmlSerializer(typeof(AList), aor);

带有示例输出

<AList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <b />  <c /></AList>

无论哪种情况,您都 必须 缓存并重新使用该

ser
实例。否则您将因动态编译而流失内存。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5505810.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-13
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存