gpt4 book ai didi

c# - XPathNavigator 是否需要 MoveToParent()/MoveToFirstChild() 对?

转载 作者:行者123 更新时间:2023-11-30 22:33:41 26 4
gpt4 key购买 nike

这是使用 Microsoft 中的 XPathNavigator 的示例.

using System;
using System.Xml;
using System.Xml.XPath;

// http://support.microsoft.com/kb/308343
namespace q308343 {
class Class1 {
static void Main(string[] args) {

XPathNavigator nav;
XPathDocument docNav;

docNav = new XPathDocument(@"Books.Xml");
nav = docNav.CreateNavigator();
nav.MoveToRoot();

//Move to the first child node (comment field).
nav.MoveToFirstChild();

do {
//Find the first element.
if (nav.NodeType == XPathNodeType.Element) {
//Determine whether children exist.
if (nav.HasChildren == true) {

//Move to the first child.
nav.MoveToFirstChild();

//Loop through all of the children.
do {
//Display the data.
Console.Write("The XML string for this child ");
Console.WriteLine("is '{0}'", nav.Value);

//Check for attributes.
if (nav.HasAttributes == true) {
Console.WriteLine("This node has attributes");
}
} while (nav.MoveToNext());
}
}
} while (nav.MoveToNext());
//Pause.
Console.ReadLine();
}
}
}

我认为这段代码有一个错误,当没有要显示的元素时,它不会执行 MoveToParent() 以上升到一个级别。

nav.MoveToFirstChild();

//Loop through all of the children.
do {
....
} while (nav.MoveToNext());

nav.MoveToParent(); <-- This seems to be missing.

但是,当我编译/执行此示例时,无论是否使用 nav.MoveToParent(),它都可以正常工作。

XPathNavigator 是否需要 MoveToParent()/MoveToFirstChild() 对?可以不使用 MoveToParent() 吗,因为当第一次执行 时,第二次执行 MoveToNext() 就像 MoveToParent() >MoveToNext() 返回 false?

最佳答案

在这段代码中,我们遍历了根节点的所有子节点之后,就没有更多的工作要做了,根节点不能超过一个。所以不需要 MoveToParent(),我们可以直接退出。这正是代码的作用。

关于c# - XPathNavigator 是否需要 MoveToParent()/MoveToFirstChild() 对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8186091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com