【发布时间】:2013-07-16 11:01:24
【问题描述】:
我有一个 XML 示例:
<Fruits>
<Red_fruits>
<Red_fruits></Red_fruits>
</Red_fruits>
<Yellow_fruits>
<banana></banana>
</Yellow_fruits>
<Red_fruits>
<Red_fruits></Red_fruits>
</Red_fruits>
</Fruits>
我有 4 个 Red_fruits 标签,其中 2 个共享相同的 ParentNode(水果),我想获得那些具有相同 ParentNode 的标签。
但我只想要那些具有相同名称的(Red_fruits),这意味着不包括 Yellow_fruits 标签。
这就是我现在使用 C# 语言的方式:
XmlDocument doc = new XmlDocument();
string selectedTag = cmbX.text;
if (File.Exists(txtFile.text))
{
try
{
//Load
doc.Load(cmbFile.text);
//Select Nodes
XmlNodeList selectedNodeList = doc.SelectNodes(".//" + selectedTag);
}
Catch
{
MessageBox.show("Some error message here");
}
}
这会将所有 red_fruits 归还给我,而不仅仅是属于 Fruits 的那些。
我无法使 XmlNodeList = doc.SelectNodes("/Fruits/Red_fruits") 因为我想使用此代码来读取随机 XML 文件,所以我不知道特定节点的确切名称,我只需要将所有具有相同名称和相同级别的节点放入一个XmlNodeList 使用C#语言。
有没有办法在不使用 LINQ 的情况下实现这一点?该怎么做?
【问题讨论】:
-
你真的一试便知吗?我不这么认为
-
为什么限制“不使用 LINQ”?我要做的是将你所拥有的结果按深度分组,然后选择你想要的组。
-
基本上,我不认为你可以实现“所有标签的深度相同”,而不回答“与什么深度相同”的问题?
-
我无法使用 LINQ,因为我的 vs 版本是 2005 :/
-
@IAbstract 旧 VS 版本不支持新版本中的语言功能。类似于 LINQ 的扩展方法。