xml读取中需要注意的地方

并不是所有的XmlNode.Value都是有定义的,
我们初学者可能常犯的错误:
<root>
   aaa
</root>
我们会企图用下面的代码访问值:aaa
   XmlDocument doc = new XmlDocument();
   doc.Load("test.xml");
   XmlElement root = doc.DocumentElement;
   Console.WriteLine(root.Value);
但实际上,root还有一个childNode,即字符串“aaa”,他的类型是:Text
我们必须这样访问它:
Console.WriteLine(root.ChildNodes[0].Value);
但是我发现如果用XPathNavigator来访问xml文件就不同,如下面的例子:
   XPathDocument doc = new XPathDocument("test.xml");
   XPathNavigator nav = doc.CreateNavigator();
   string strXPath = "/root";
   XPathExpression expr = nav.Compile(strXPath);
   XPathNodeIterator iter = nav.Select(expr);
   iter.MoveNext();
   Console.WriteLine(nav.Value);
Navigator也只是定位到root节点,但它就可以直接访问到value值。
这可能是提供了区别于上面那种的访问方式吧。
至于内部Navigator是怎么实现的,待我去问问我们的鞠老大吧。

posted on 2005-07-26 14:55  栖息的熊  阅读(570)  评论(0编辑  收藏  举报

导航