我有大量XML文件都包含相同的XML文檔,但具有不同的值。但是每個文件的結構都是一樣的。C#,XML查詢問題
在這個文件裏我有一個日期時間字段。
什麼是查詢這些XML文件的最好,最有效的方法?所以我可以檢索例如...所有文件的日期時間字段=今天的日期?
我使用C#和.net v2。我應該在文件搜索例程中使用XML對象來實現這個還是文本?
的某些代碼示例將是巨大的......或者只是一般的理論,什麼會有所幫助,謝謝...
我有大量XML文件都包含相同的XML文檔,但具有不同的值。但是每個文件的結構都是一樣的。C#,XML查詢問題
在這個文件裏我有一個日期時間字段。
什麼是查詢這些XML文件的最好,最有效的方法?所以我可以檢索例如...所有文件的日期時間字段=今天的日期?
我使用C#和.net v2。我應該在文件搜索例程中使用XML對象來實現這個還是文本?
的某些代碼示例將是巨大的......或者只是一般的理論,什麼會有所幫助,謝謝...
這取決於這些文件的大小以及數據的實際複雜程度。就我理解的問題而言,對於這種XML數據,使用XPath查詢並遍歷所有文件可能是最好的方法,可能會緩存文件以減少解析開銷。
看一看: XPathDocument中,XmlDocument的類和XPath查詢
http://support.microsoft.com/kb/317069
像這樣的東西應該做的(不,雖然測試):
XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
// if required, add your namespace prefixes here to nsmgr
XPathExpression expression = XPathExpression.Compile("//element[@date='20090101']", nsmgr); // your query as XPath
foreach (string fileName in Directory.GetFiles("PathToXmlFiles", "*.xml")) {
XPathDocument doc;
using (XmlTextReader reader = new XmlTextReader(fileName, nsmgr.NameTable)) {
doc = new XPathDocument(reader);
}
if (doc.CreateNavigator().SelectSingleNode(expression) != null) {
// matching document found
}
}
注意:當你還可以直接從URI /路徑加載XPathDocument,使用閱讀器確保使用相同的名稱表作爲用於編譯XPath查詢的名稱表。如果正在使用不同的名稱表,則不會從查詢中獲得結果。
感謝這是一個很好的答案...正是我所需要的... – 2009-09-22 13:06:12
感謝您接受它。然而,我想知道我是誰以及爲什麼被低估... – Lucero 2009-09-22 13:14:06
令人驚訝的是,你被我貶低了,而不是故意的,我做了一個虛假的點擊,但是當我試圖糾正這個錯誤時,我收到一條消息:也是投票老將被改變....所以我想這是一個stackoverflow錯誤。對不起,真的不是故意的,謝謝你對這個答案的所有幫助,我的項目應該按時完成...... – 2009-09-22 15:31:51
你可能會考慮運行XSL queries。另見XSLT Tutorial,XML transformation using Xslt in C#,How to query XML with an XPath expression by using Visual C#。
這個問題也涉及到另一個堆棧溢出:Parse multiple XML files with ASP.NET (C#) and return those with particular element。但是,accepted answer there建議使用Linq。
感謝這個例子似乎可以處理1個XML文檔,不知道是否有辦法處理多個文檔,獲取文件列表或至少他們的文件名? – 2009-09-22 12:47:15
如果完全有可能遷移到C#3.0/.NET 3.5,那麼LINQ-to-XML將是最簡單的選擇。
對於.NET 2.0,您會遇到XML對象或XSL。
對不起,不能用.net v2 – 2009-09-22 12:51:55
幾乎重複http://stackoverflow.com/questions/108010/parse-multiple-xml-files-with-asp-net-c-and-return-those-with-particular-eleme? – 2009-09-22 12:55:19
什麼是通用文件大小,以及文件中的哪個位置可以找到日期時間值(文件有多遠) – 2009-09-22 12:56:43