2011-05-10 144 views
0

如何簡單比較元素名稱中的兩個xml文件。 如果任何元素名稱不匹配,它應該返回true,否則爲假.. 我使用xml文件比較

var matches = from a in file1.Element("in_mind").Descendants() 
          join b in file2.Element("in_mind").Descendants() on a.Name equals b.Name 
          select new { First = a, Second = b }; 

      foreach (var n in matches) 
       if(n.First.ToString().Intersect(n.Second.ToString()).Count()>0) 
       { 

       } 
       else 
       { 
        MessageBox.Show("not matched"); 
        return; 
       } 

但不檢查元素名稱..

+0

這是關於同樣的第四個問題。以前的答案有什麼問題? – username 2011-05-10 10:30:47

+0

我更新了上面張貼的以前的答案..但它並沒有給出「if」條件中的不同值。我已經評論了xml文件中的一行,但「if」循環沒有中斷.. – kawadw 2011-05-10 10:37:49

回答

1

也許這樣的事情?從兩個文件中獲取所有後代的名稱並檢查它們是否相同。我不知道這是你想做什麼。

var elements1=(from e in file1.Element("in_mind").Descendants() select e.Name).ToList(); 
var elements2=(from e in file2.Element("in_mind").Descendants() select e.Name).ToList(); 

for(int i=0;i<elements1.Count;i++) 
{ 
    if(elements1[i]!=elements2[i]) 
    { 
     return false; 
    } 
} 

return true; 
+0

謝謝。非常感謝..它解決了我的問題.. – kawadw 2011-05-10 10:44:17

+0

它不是最好的,如果你有很多的節點,但它可以幫助你一開始,你可以稍後優化它。連接的問題在於它不能確保文件是相同的,只是可能它們有相同的元素。我認爲存在列表比較的功能,它更容易,所以你不必有循環。 – Athina 2011-05-10 10:54:52