导航

XPathDocument 与 XmlDocument 结合使用[yysun]

Posted on 2004-11-02 23:10  yysun  阅读(2354)  评论(1编辑  收藏  举报

XPathDocument 是只读、随机读取 XML。
XmlDocument 是可读写、随机读取 XML。
一般如果不需要修改 XML,尽量使用 XPathDocument。

下面是两个小技巧:

1、XPathDocument 可以定义排序方式:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxpathxpathnavigatorclassselecttopic.asp

     XPathDocument doc = new XPathDocument("booksort.xml");
     XPathNavigator nav = doc.CreateNavigator();

     //Select all books by Jane Austen.
     XPathExpression expr; 
     expr = nav.Compile("descendant::book[author/last-name='Austen']");

     //Sort the selected books by title.
     expr.AddSort("title", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Text);

     XPathNodeIterator iterator = nav.Select(expr);

2、用 IHasXmlNode 编辑 XPathNodeIterator 返回的 Node
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlihasxmlnodeclasstopic.asp

     XmlDocument doc = new XmlDocument();
     doc.Load("books.xml");
                         
     // Create an XPathNavigator and select all books by Plato.
     XPathNavigator nav = doc.CreateNavigator();
     XPathNodeIterator ni = nav.Select("descendant::book[author/name='Plato']");
     ni.MoveNext();

     // Get the first matching node and change the book price.
     XmlNode book = ((IHasXmlNode)ni.Current).GetNode();
     book.LastChild.InnerText = "12.95";
     Console.WriteLine(book.OuterXml);