亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

怎樣快速從一個XML文件中查找信息

2024-09-05 20:53:25
字體:
來源:轉載
供稿:網友
在網絡時代,XML文件起到了一個保存和傳輸數據的作用。Soap協議通過Xml交流信息,數據庫通過Xml文件存取等等。那么怎樣快速的從一個XML文件中取得所需的信息呢?

我們知道,JAVA的JAXP中和Microsoft.Net都有Xml分析器,Microsoft.Net是邊讀邊分析,而JAXP是讀到內存中然后才進行分析(還有一種是事件機制去讀),總而言之,是不利于快速讀取。基于此,Microsoft.Net 和JAXP都提供了XPATH機制,來快速定位到XML文件中所需的節點。

例如有一個XML文件:booksort.xml:

<?xml version="1.0"?>

<!-- a fragment of a book store inventory database -->

<bookstore xmlns:bk="urn:samples">

<book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">

<title>Pride And Prejudice</title>

<author>

<first-name>Jane</first-name>

<last-name>Austen</last-name>

</author>

<price>24.95</price>

</book>

<book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">

<title>The Handmaid's Tale</title>

<author>

<first-name>Margaret</first-name>

<last-name>Atwood</last-name>

</author>

<price>29.95</price>

</book>

<book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">

<title>Emma</title>

<author>

<first-name>Jane</first-name>

<last-name>Austen</last-name>

</author>

<price>19.95</price>

</book>

<book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">

<title>Sense and Sensibility</title>

<author>

<first-name>Jane</first-name>

<last-name>Austen</last-name>

</author>

<price>19.95</price>

</book>

</bookstore>

如果我們想快速查找”last-name”等于”Austen”的所有標題名,可以通過以下方法可以得到:

XmlReaderSample.cs

//Corelib.net/System.Xml.Xsl/XPathDocument Class

//Author :Any


using System;

using System.IO;

using System.Xml;

using System.Xml.XPath;


public class XmlReaderSample

{

public static void Main()

{

XmlTextReader myxtreader = new XmlTextReader("booksort.xml");

XmlReader myxreader = myxtreader;

XPathDocument doc = new XPathDocument(myxreader);

XPathNavigator nav = doc.CreateNavigator();


XPathExpression expr;

expr = nav.Compile("descendant::book[author/last-name='Austen']");


//expr.AddSort("title", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Text);


XPathNodeIterator iterator = nav.Select(expr);

while (iterator.MoveNext())

{

XPathNavigator nav2 = iterator.Current;

nav2.MoveToFirstChild();

Console.WriteLine("Book title: {0}", nav2.Value);

}

}

}

運行這個程序,結果為:

Book title: Pride And Prejudice

Book title: Emma

Book title: Sense and Sensibility


可以看到查找正確。

利用XPATH中的一些功能,也可以實現簡單的排序和簡單運算。如在數據庫中經常要對數據進行匯總,就可用XPATH實現。

如:

order.xml

<!--Represents a customer order-->

<order>

<book ISBN='10-861003-324'>

<title>The Handmaid's Tale</title>

<price>19.95</price>

</book>

<cd ISBN='2-3631-4'>

<title>Americana</title>

<price>16.95</price>

</cd>

</order>


和:books.xml

<?xml version="1.0"?>

<!-- This file represents a fragment of a book store inventory database -->

<bookstore>

<book cc="dd" xmlns:bk="urn:sample" xmlns:ns="http://www.Any.com" genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">

<title>The Autobiography of Benjamin Franklin</title>

<ns:author>

<first-name>Benjamin</first-name>

<last-name>Franklin</last-name>

</ns:author>

<price>8.99</price>

</book>

<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">

<title>The Confidence Man</title>

<author>

<first-name>Herman</first-name>

<last-name>Melville</last-name>

</author>

<price>11.99</price>

</book>

<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">

<title>The Gorgias</title>

<author>

<name>Plato</name>

</author>

<price>9.99</price>

</book>

</bookstore>


我們可以對該XML文件中的price求和,以得到價格總數。

Evaluate.cs

//Corelib.net/System.Xml.Xsl/XPathNavigator Class

//Author :Any


using System;

using System.IO;

using System.Xml;

using System.Xml.XPath;



public class EvaluateSample

{

public static void Main()

{

EvaluateSample myEvaluateSample = new EvaluateSample();

myEvaluateSample.test("books.xml");

}


public void test(String args)

{

try

{

//test Evaluate(String);

XPathDocument myXPathDocument = new XPathDocument(args);

XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator();

Console.WriteLine(myXPathNavigator.Evaluate("sum(descendant::book/price)"));


//testEvaluate(XPathExpression);

XmlDocument doc = new XmlDocument();

doc.Load("order.xml");

XPathNavigator nav = doc.CreateNavigator();

XPathExpression expr = nav.Compile("sum(//price/text())");

Console.WriteLine(nav.Evaluate(expr));


//testEvaluate(XPathExpression);


XPathNodeIterator myXPathNodeIterator = nav.Select("descendant::book/title");

expr = nav.Compile("sum(//price/text())");

Console.WriteLine(nav.Evaluate(expr,myXPathNodeIterator));


}

catch (Exception e)

{

Console.WriteLine ("Exception: {0}", e.ToString());

}

}


}

運行這個程序,結果如下:

30.97

36.9

36.9

我們可以看到,30.97是books.xml中所有price值的總和,而36.9則是order.xml中所有price值的總和。通過XPAH不僅可以快速查找信息,而且還可以對信息進行一些基本的處理。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情视频三区| 国产精品99久久久久久久久| 日韩精品中文字| 欧美日韩国产123| 亚洲片国产一区一级在线观看| 国产精品久久久久久av下载红粉| 亚洲综合av影视| 国产区精品在线观看| 国产日本欧美视频| 亚洲品质视频自拍网| 成人午夜在线观看| 精品视频www| 日韩av不卡电影| 久久久久久久久久久免费精品| 亚洲最大福利网| 97在线免费视频| 国产精品观看在线亚洲人成网| 国产精品电影久久久久电影网| 国产日韩欧美视频| 久久99久久99精品中文字幕| 日本精品视频在线观看| 成人免费xxxxx在线观看| 成人网在线视频| 亚洲wwwav| 国产va免费精品高清在线| 在线播放日韩av| 久久国产精品久久久| 欧美孕妇孕交黑巨大网站| 亚洲午夜国产成人av电影男同| 91牛牛免费视频| 国产精品久久97| 国产视频精品一区二区三区| 亚洲老头同性xxxxx| 亚洲成人三级在线| 欧美日韩亚洲视频| 亚洲一区二区三区成人在线视频精品| 午夜精品久久久99热福利| 久久久免费观看| 亚洲国产精品久久久久久| 性欧美xxxx视频在线观看| 欧美特级www| 日韩精品中文字幕久久臀| 亚洲香蕉成人av网站在线观看| 欧美尺度大的性做爰视频| 欧洲亚洲在线视频| 成人午夜高潮视频| 成人性生交大片免费看视频直播| 伊人久久大香线蕉av一区二区| 亚洲片在线资源| 亚洲美女喷白浆| 亚洲成人久久网| 最近2019中文字幕在线高清| 5252色成人免费视频| 91大神在线播放精品| 日本精品视频在线播放| 国产精品亚洲欧美导航| 中文字幕亚洲在线| 国产欧美在线视频| 不卡av日日日| 日本欧美爱爱爱| 91高潮精品免费porn| 国产一区二区三区18| 久久久精品2019中文字幕神马| 日韩美女视频中文字幕| 欧美自拍视频在线观看| 亚洲色图狂野欧美| 亚洲区bt下载| 欧美大片免费观看| 国产偷国产偷亚洲清高网站| 国产97在线视频| 久久久噜久噜久久综合| 欧美日韩福利视频| 国产精品国内视频| 亚洲白虎美女被爆操| 色综合天天综合网国产成人网| 成人羞羞国产免费| 国产精品国产三级国产专播精品人| 亚洲男人天堂手机在线| 国产精品久久久久久久久久| 日本精品一区二区三区在线| 欧美性受xxxx黑人猛交| 亚洲电影成人av99爱色| 欧美激情在线播放| 成人免费直播live| 日韩在线免费观看视频| 国产精品视频成人| 久久影院资源站| 国产成人精品最新| 亚洲视频在线观看网站| 亚洲激情免费观看| 亚洲三级免费看| 一本色道久久综合狠狠躁篇的优点| 亚洲视频专区在线| 欧美成人午夜激情| 欧美在线亚洲在线| 久久高清视频免费| 亚洲欧美国产制服动漫| 欧美丝袜一区二区| 亚洲在线视频观看| 91精品国产综合久久久久久蜜臀| 91影院在线免费观看视频| 日韩在线一区二区三区免费视频| 久久伊人91精品综合网站| 精品久久国产精品| 亚洲自拍中文字幕| 欧美日韩xxxxx| 亚洲网站在线观看| 国产精品久久久久久婷婷天堂| 91精品国产自产在线观看永久| 久久精品久久久久久国产 免费| 最近2019中文字幕在线高清| 草民午夜欧美限制a级福利片| 亚洲欧洲日产国码av系列天堂| 国产有码一区二区| 欧美一级电影久久| 日本亚洲欧洲色α| 亚洲成人av在线播放| 国模私拍视频一区| 黄色精品一区二区| 亚洲天堂网站在线观看视频| 久久久久久12| 伦伦影院午夜日韩欧美限制| 久久精品一本久久99精品| 亚洲欧美国产精品专区久久| 国产精品久久久久久av下载红粉| 久久久久在线观看| 亚洲欧美成人网| 国产999在线| 国产亚洲欧洲高清一区| 欧美视频在线免费| 成人免费在线视频网址| 免费99精品国产自在在线| 岛国精品视频在线播放| 久久综合久中文字幕青草| 亚洲美女性视频| 成人午夜两性视频| 日本高清久久天堂| 欧美韩国理论所午夜片917电影| 国产精品嫩草视频| 久久久伊人欧美| 91精品视频在线免费观看| 黄色成人在线播放| 国产成人精品电影久久久| 国产精品专区第二| 久久精品91久久香蕉加勒比| 国产一区二区丝袜高跟鞋图片| 久久成人精品视频| 色综合久久悠悠| 国产成+人+综合+亚洲欧洲| 国产精品毛片a∨一区二区三区|国| 久久久女女女女999久久| 久久久久久久久久久国产| 尤物yw午夜国产精品视频| 国产精品爽爽ⅴa在线观看| 欧美大片第1页| 日韩av免费一区| 欧美日韩午夜激情| 亚洲视频一区二区| 国产精品福利久久久| 国产91精品久久久久| 按摩亚洲人久久| 66m—66摸成人免费视频| 最近2019中文字幕mv免费看| 亚洲码在线观看|