- XPath数据模式依赖存System.Xml.XPath命名空间的XPathNavigator类。
- XPathNavigator类是一个抽象类,是一个以指针方式为基础的浏览XML数据的模式,它允许你对XML文件进行编辑。
- 你可以从任何实现了IXPathNavigable接口的类获得XPathNavigator类的一个实例。XmlDocument和XPathDocument就是实现了这个接口的类。
- XmlDocument返回的XML是可编辑的,XPathDocument返回对象是只读的。
创建XPathNavigator对象:
1: //功能性示例代码:
2: private void button1_Click(object sender, EventArgs e)
3: {
4: XPathNavigator navigator = null;
5: if (radioButton1.Checked)
6: {
7: //XmlDocument类创建XPathNavigator对象
8: XmlDocument doc = new XmlDocument();
9: doc.Load(Application.StartupPath + @"/employees.xml");
10: navigator = doc.CreateNavigator();
11: }
12: else
13: {
14: //XmlPathDocument类创建XPathNavigator对象
15: XPathDocument doc = new XPathDocument(Application.StartupPath + @"/employees.xml");
16: navigator = doc.CreateNavigator();
17: }
18: MessageBox.Show("Navigator created successfully!");
19: }
通过XPathNavigator来浏览XML文档
1: protected void Button1_Click(object sender, EventArgs e)
2: {
3: XPathDocument doc =new XPathDocument(xmlFilePath);
4: XPathNavigator navigator = doc.CreateNavigator();
5: navigator.MoveToRoot();
6: navigator.MoveToFirstChild();
7: TreeNode root = TreeView1.Nodes.Add("Employees");
8: while (navigator.MoveToNext())
9: {
10: if (navigator.HasChildren)
11: {
12: navigator.MoveToFirstChild();
13: do
14: {
15: string id = navigator.GetAttribute("employeeid", "");
16: TreeNode empnode = new TreeNode("Employee ID :" + id);
17: root.Nodes.Add(empnode);
18: navigator.MoveToFirstChild();
19: do
20: {
21: string name = navigator.Name;
22: TreeNode node = new TreeNode(name + " : " + navigator.Value);
23: empnode.Nodes.Add(node);
24: } while (navigator.MoveToNext());
25: navigator.MoveToParent();
26: }
27: while (navigator.MoveToNext());
28: }
29: }
30: }