2013-09-25 88 views
0

所以,我只需要那些立即在<and>之內而不在<not>之內的那些等值的值。所以,我需要以下內容:7942和6252.我如何得到這些?如何使用linq解析此xml?

<aaa> 
    <and> 
     <equal ident="qwe">7942</equal> 
     <equal ident="qwe">6252</equal> 
     <not> 
      <equal ident="qwe">1056</equal> 
     </not> 
     <not> 
      <equal ident="qwe">6562</equal> 
     </not> 
    </and> 
</aaa> 
+0

你還沒說什麼是錯的,你的查詢不使用'這是要使它更難varequal' ... –

+0

我只是試圖找出究竟需要成爲linq查詢,因爲無論我使用的是不正確的,並沒有檢索任何值。 – user2085236

+2

您的XML無效 - ''標籤需要有一個匹配的''標籤,但是您有''。 – Tim

回答

0

要麼這是一個無效的XML,你不能使用LINQ解析它,或者你有錯字,開放標籤名稱應該匹配的結束標記的名稱,例如:

<aaa> 
    <and> 
    <equal ident="qwe">7942</equal> 
    <equal ident="qwe">6252</equal> 
    <not> 
     <equal ident="qwe">1056</equal> 
    </not> 
    <not> 
     <equal ident="qwe">6562</equal> 
    </not> 
    </and> 
</aaa> 

解析這個XML看起來像:

var xdoc = XDocument.Load(path_to_xml); 
var result = xdoc.Descendants("and").Elements("equal").Select(e => (int)e); 

給出:

7942 
6252 

同樣使用XPath

var result = xdoc.XPathSelectElements("//and/equal").Select(e => (int)e); 
+1

對不起,是的,這是一個錯字。我現在修好了。 – user2085236