如何轻松遍历反序列化的Xml文档?

时间:2015-04-23 02:50:52

标签: c# xml serialization deserialization

我目前正在尝试为基于XML的collada(.dae)文件创建导入程序。我将xml文件反序列化为可以轻松访问的对象。 例如,.dae文件可能有这样的设置......

Picasso.with(this)
            .load(url)
            .networkPolicy(NetworkPolicy.OFFLINE)
            .into(imageView);

然后以类似的方式对其进行反序列化(使用xmlSerializer.Deserialize)。所以要访问“网格”中的第二个“源”,我会做library_geometries.geometry [0] .mesh.source [1];

一切都很好,我遇到的问题很容易遍历这个反序列化的xml文档。

例如,在“顶点”中有一个source =“#Cube1s_008-mesh-positions”,它基本上意味着“访问顶点数据,转到id为”Cube1s_008-mesh-positions“”的源。我想要做的是轻松地从顶点直接到具有该id的源或任何东西。 所以它看起来像library_geometries.geometry [0] .mesh.vertices.GoToSource();并且我可以做library_geometries.geometry [0] .mesh.vertices.GoToSource()。float_array.values;

我假设我需要用反射来做这件事。 也许搜索具有[XmlAttribute(“id”)]的任何字段,然后以某种方式返回其正确类型的对象。 任何想法都表示赞赏。

2 个答案:

答案 0 :(得分:0)

您可以使用两种基本方法。



1) Build a dictionary
2) Add a new property Geometry geometry to the class veritices which is NonSerialize.  After deserialize, enumerate through the classes adding the value to the property geometry.




答案 1 :(得分:0)

这就是我喜欢词典的原因。我经常使用类似下面的类来嵌套结构。



> nil + 2
=> #<NoMethodError: undefined method `+' for nil:NilClass>
>  
&#13;
&#13;
&#13;