【发布时间】:2011-01-31 06:12:00
【问题描述】:
我正在使用某个没有冗余的 XML
<person>
<eye>
<eye_info>
<eye_color>
blue
</eye_color>
</eye_info>
</eye>
<hair>
<hair_info>
<hair_color>
blue
</hair_color>
</hair_info>
</hair>
</person>
如您所见,子标签 eye-color 在其名称中引用了 eye,因此无需避免冗余,在将 XML 加载到数据集后,我可以在一行中获取眼睛颜色:
dataset.ReadXml(path);
value = dataset.Tables("eye_info").Rows(0)("eye_color");
我确实意识到这不是最明智的做法,而且我现在遇到的这种情况并非没有预料到。
现在,假设我必须读取这种格式的 xml:
<person>
<eye>
<info>
<color>
blue
</color>
</info>
</eye>
<hair>
<info>
<color>
blue
</color>
</info>
</hair>
</person>
所以如果我尝试这样称呼它:
dataset.ReadXml(path);
value = dataset.Tables("info").Rows(0)("color");
会有冗余,因为我以前的方法只能上一层来识别 XML 中的单个字段,而“消歧器”在上面三层。
在给定上述所有(或至少几个)字段的情况下,是否有一种实用的方法可以准确无误地访问单个字段?
--[编辑]--
我提出了另一个问题,询问如何使用 linq 获取某个节点,check it out。
【问题讨论】: