我有一個複雜的案例:我有三個XML文件,我需要同時讀取並根據匹配獲取結果。下面是一個工作(但是假的)例子,與我正在做的幾乎相似。如何以高效的方式同時讀取兩個XML文件
例如,我有兩個xml文件,兩者在標籤和屬性方面相似,但內容(語言)不同。我在讀這兩種語言在同一時間,就像在C#文件中的代碼:
XElement x1 = XElement.Load (@"abc.xml");
XElement x2 = XElement.Load (@"xyz.xml");
var ch = from var1 in x1.Elements("language1")
where var1.Attribute("index").Value == "1"
from var2 in x2.Elements("language2")
where var2.Attribute("index").Value == var1.Attribute("index").Value
select dictChapter as new
{
sentenceNumber = var1.Attribute("index").Value,
SentenceInLanguage1 = var1.Attribute("text").Value,
SentenceInLanguage2 = var2.Attribute("text").Value,
};
ListBox.DataContext = ch;
的這裏的問題是,X1包含1000句等X2。上面的邏輯工作像嵌套循環一樣,這會減慢處理速度。它的工作原理就像
x1.1 -> x2.1:1000
x1.2 -> x2.1:1000
或
for i in x1
for j in x2
有選擇從X1和X2,其中X1的句子ID等於x2的句子ID句子什麼更好的和有效的方式?
你有沒有調試或分析這看到重處理髮生的地方?如果更重的處理來自將文件數據讀入內存或進行匹配,可能有利的是知道。 – jlafay 2012-04-17 14:48:22
我不太瞭解調試工具。但是當我使用簡單的調試,但執行下面的語句需要時間'lstBox.DataContext = ch' – wafers 2012-04-17 14:51:34
在同樣的筆記中,當我只以一種語言從一個文件讀取時,它幾乎沒有時間,但是當我從兩個文件中讀取,如上所述,時間呈指數級增長。 – wafers 2012-04-17 14:52:30