2014-04-08 127 views
0

我堅持將Linq寫入XML select,並希望您能幫助我。如何選擇後代具有特殊屬性的元素

我的XML如下所示:

<myXML> 
    <parent> 
     <child name="ID">0</child> 
     <child name="Name">Test 1</child> 
    </parent> 
    <parent> 
     <child name="ID">1</child> 
     <child name="Name">Test 2</child> 
    </parent> 
    <parent> 
     <child name="ID">0</child> 
     <child name="Name">Test 3</child> 
    </parent> 
    <parent> 
     <child name="ID">2</child> 
     <child name="Name">Test 4</child> 
    </parent> 
</myXML> 

我儘量選擇與它的孩子,有屬性ID = 0所有的父元素,讓我找回了以下內容:

<parent> 
    <child name="ID">0</child> 
    <child name="Name">Test 1</child> 
</parent> 
<parent> 
    <child name="ID">0</child> 
    <child name="Name">Test 3</child> 
</parent> 

XML非常大,所以選擇應該是高性能的。謝謝你的幫助!!!

問候

回答

0

試試這個:

var query = 
    from p in xd.Root.Elements("parent") 
    where p 
     .Elements("child") 
     .Any(c => 
      c.Attribute("name").Value == "ID" 
      && c.Value == "0") 
    select p; 
0

加載後/解析文檔轉換爲XDocument,性能,我會用XPath,如下

var elements = document 
    .XPathSelectElements("/myXML/parent[normalize-space(child[@name='ID'])='0']"); 

即「找到所有parent元素與child元素具有屬性名稱ID和修剪值爲0「

相關問題