加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#:将对象渲染为XML

发布时间:2020-12-15 08:32:02 所属栏目:百科 来源:网络整理
导读:我正在寻找一种将对象树转换为 XML的方法.写作会很有趣,但我相信有人已经写过了.这是我的愿望清单: 它不应该关心构造函数 它理想情况下应该处理循环引用(不太f) 它不应该要求更改对象 – 例如,没有自定义属性 它不应该关心或要求已知类型(例如,XmlInclude)
我正在寻找一种将对象树转换为 XML的方法.写作会很有趣,但我相信有人已经写过了.这是我的愿望清单:

>它不应该关心构造函数
>它理想情况下应该处理循环引用(不太f)
>它不应该要求更改对象 – 例如,没有自定义属性
>它不应该关心或要求已知类型(例如,XmlInclude)
> XML应该简单易懂 – 操作团队成员需要人类可读
>如果属性无法序列化,则应该只是抑制错误并继续
>可以处理列表和词典

我不需要重建对象模型,因此只写解决方案很好(可能是预期的).

我认为折扣:

> XmlSerializer – 需要无参数构造函数,没有循环引用支持
> DataContractSerializer – 需要属性(选择加入)

解决方法

这似乎是直接使用反射编写:给定一个对象实例,创建一个带有类名的XML元素,然后迭代它的所有属性.

对于每个属性,创建一个名称为的元素:

>如果它是值类型,则将其文本设置为其值的XML Schema文本;
>如果它实现了IEnumerable,则遍历它并为每个项创建一个元素;
>如果是任何其他引用类型,请将元素的内容设置为属性的XML表示.

使用包含您已序列化的每个对象的哈希码的HashSet跟踪循环/多个引用;如果你在HashSet中找到一个对象的哈希码,你已经将它序列化了. (如果发生这种情况,我不知道你想把什么放入XML.)

但不,我没有任何代码可以解决这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读