【发布时间】:2015-12-28 20:41:58
【问题描述】:
我将 xml 文件加载到递归字典中,以便我可以通过以下方式访问 xml 文件: Example.xml:
<objects>
<object>
<id>256</id>
<objectType>Person</objectType>
<name>Bob</name>
<object>
<id>128</id>
<objectType>BodyType</objectType>
<shape>Athletic</shape>
</object>
<object>
<id>1024</id>
<objectType>Body-Measurements</objectType>
<height>5'9"</height>
<weight>155</weight>
</object>
</object>
<object>
<id>512</id>
<objectType>T-Shirt</objectType>
<object>
<id>64</id>
<objectType>Logo</objectType>
<design>Dragon-Tatoo</design>
<object>
<id>64</id>
<objectType>Design-Color</objectType>
<color>black</color>
</object>
</object>
</object>
使用递归字典的示例 C# 代码:
RecursiveDictionary RE = loadXML("Example.xml");
Console.WriteLine( ToInt(RE["objects"]["0"]["object"]["id"]) . "\n" );
Console.WriteLine( RE["objects"]["0"]["object"]["0"]["object"]["1"]["height"] . "\n" );
Console.WriteLine( ToConsoleColor(RE["objects"]["1"]["object"]["0"]["object"]["0"]["object"]["color"]).ToString() . "\n" );
示例输出:
128
5'9"
black
ToConsoleColor() 不需要打印出字符串“黑色”,但在我的真实应用程序中,我会进行转换,然后将控制台颜色设置为 ToConsoleColor() 返回的枚举值。在这种情况下,我只是打印 ToString() 以显示我想要在递归字典中拉入 XML 然后访问 xml 文件的详细信息并将它们转换为有用的程序数据类型的效果(在这个控制台枚举值的大小写)。
我有代码可以在尝试转换任何内容之前检查键/值或标签/值是否存在,并且会打印出错误,让我知道我没有处理特定的 xml 标签以及出于什么原因。代码尽可能地运行,无论是否出现错误 xml。
我想知道这样做与使用 X-Paths 相比有什么缺点。
【问题讨论】:
-
我觉得这个dynamic version 更易读
标签: c# xml dictionary recursion