0

我正在尝试获取选定“Xpath 位置”中的所有元素并将它们添加到组合框/下拉列表中。

我尝试使用 Xpath 查询选择所有这些元素: /@* 和 XpathNodeIterator 中的 Select 方法。

问题是它返回一个不向前移动的迭代器,实际上,它说它没有子节点,并且不允许我将迭代器转换为 xmlElement 或节点,以便我至少可以在它们内部进行搜索。

这是代码:

 while (anIterator.MoveNext())
            {
                //im trying to select  all nodes  of selected path which and return them to an iterator
                secondIterator = anIterator.Current.Select("/@*");                    

                while (secondIterator.MoveNext())
                {
                    aNode = new Nodes();
                    aNode.Name = anIterator.Current.MoveToFirstChild().ToString();
                    nodeList.Add(aNode);
                }
                nodeList.Add(aNode);
            }

获取当前节点中所有元素的任何解决方案?

4

2 回答 2

0

如果没有您正在使用的 XML 文件,也没有您告诉我们您希望看到什么,以及您目前正在看到什么,这肯定更难回答。

以下是一些观察:

XPath 中的“@”字符表明您正在尝试获取当前节点的所有属性。'/' 告诉 Path 从 DOM 的根目录开始。

如果您试图获取当前节点下的所有元素,您可能需要更改为“./*”

于 2012-12-20T23:32:20.177 回答
0

问题是@,这表明您要选择子属性,而不是子元素。(参见http://www.w3.org/TR/xpath/#path-abbrev)。

尝试anIterator.Current.Select("*")获取子元素。如果您想要所有后代元素(不仅仅是直接子元素),请尝试anIterator.Current.Select(".//*")

于 2012-12-20T23:32:32.997 回答