zoukankan      html  css  js  c++  java
  • C# 通过XPath查询/搜索/查找XML

    //实例:查找所有书名包含Harry的书

    bookdemo.xml
    <?xml version="1.0" encoding="utf-8" ?>

    <bookstore>



    <book category="COOKING">

    <title lang="en">Everyday Italian</title>

    <author>Giada De Laurentiis</author>

    <year>2005</year>

    <price>30.00</price>

    </book>



    <book category="CHILDREN">

    <title lang="en">Harry Potter</title>

    <author>J K. Rowling</author>

    <year>2005</year>

    <price>29.99</price>

    </book>



    <book category="WEB">

    <title lang="en">XQuery Kick Start</title>

    <author>James McGovern</author>

    <author>Per Bothner</author>

    <author>Kurt Cagle</author>

    <author>James Linn</author>

    <author>Vaidyanathan Nagarajan</author>

    <year>2003</year>

    <price>49.99</price>

    </book>



    <book category="WEB">

    <title lang="en">Learning XML</title>

    <author>Erik T. Ray</author>

    <year>2003</year>

    <price>39.95</price>

    </book>



    </bookstore>

    .cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

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

    //通过XPath查询XML,在XPath中使用函数 
    publicpartialclass _Default : System.Web.UI.Page
    {
    public String contx;
    protectedvoid Page_Load(object sender, EventArgs e)
    {
    contx
    ="";
    XPathNavigator nav;
    XPathDocument docNav;
    //XPathNodeIterator NodeIter; 
    XPathNavigator node;
    String strExpression;

    try
    {
    docNav
    =new XPathDocument(System.AppDomain.CurrentDomain.BaseDirectory +"bookdemo.xml");
    nav
    = docNav.CreateNavigator();
    strExpression
    ="/bookstore/book[contains(title/text(), 'Harry')]/title";
    node
    = nav.SelectSingleNode(strExpression);
    contx
    += node.InnerXml;

    /*
    NodeIter = nav.Select(strExpression);
    while (NodeIter.MoveNext())
    {
    contx += NodeIter.Current.Value + "<br />";
    }
    */
    }
    catch (Exception)
    {
    contx
    ="Unfind !";
    }
    }
    }

    (注释部分为查询全部节点的方法)

  • 相关阅读:
    PAT乙级1002. 写出这个数 (20)
    PAT乙级1001. 害死人不偿命的(3n+1)猜想 (15)
    HDU 4520 小Q系列故事——最佳裁判
    POJ 3414 Pots(BFS)
    POJ 1118 Lining Up
    POJ 2484 A Funny Game
    POJ 2231 Moo Volume
    HDU 5718 Oracle(高精度)
    FZU 1502 Letter Deletion(DP)
    HDU 1564 Play a game
  • 原文地址:https://www.cnblogs.com/bloodmage/p/1940873.html
Copyright © 2011-2022 走看看