2011-12-14 83 views
1

我想解析一些使用LINQ到XML的大型XML文件,但我不知道我該怎麼做。 我想讀取<dac>標籤後面的所有<name>標籤。我必須提到我在XMl文件中有許多<name>標記,我只想讀取<dac>之後的標記。我怎樣才能做到這一點使用LINQ到XML?使用LINQ解析XML到XML

這裏是我的XML文件的一個簡單的示例:
我想要的代碼返回我這樣的價值:(SSS, HHH, HHH Panel)

<?xml version="1.0" encoding="UTF-8"?> 

<installationTree> 
    <folder> 
    <id>1</id> 
    <name>Company</name> 
    <full-path>Door List/Company</full-path> 
    <nodes> 
     <controller> 
     <id>9</id> 
     <name>9016 Panel</name> 
     <description/>   
     <full-path>Door List/Company/9016 Panel</full-path> 
     <nodes> 
      <dac> 
      <isOneDoorController>false</isOneDoorController> 
      <id>9</id> 
      <name>SSS</name> 
      <description/> 
      <address>1</address> 
      <active>true</active> 
      <externalId>ID:9_20111123_121106</externalId> 
      <mode>standard</mode>  

      <doorCodes/> 
      <full-path>Door List/Company/9016 Panel/SSS</full-path> 
      <nodes/> 
      </dac> 
      <dac> 
      <isOneDoorController>false</isOneDoorController> 
      <id>10</id> 
      <name>HHH</name> 
      <description/> 
      <address>2</address> 
      <active>true</active> 

      <doorCodes/> 
      <full-path>Door List/Company/9016 Panel/HHH</full-path> 
      <nodes/> 
      </dac> 
     </nodes> 
     </controller> 
     <oneDoorController> 
     <id>8</id> 
     <name>HHH Panel</name> 
     <description/> 
     <serialnumber>00:06:8e:30:24:24</serialnumber> 
     <timezone>Iran</timezone> 
     <active>true</active> 
     <docUpdater/> 
     <nodes> 
      <dac> 
      <isOneDoorController>true</isOneDoorController> 
      <id>8</id> 
      <name>HHH Panel</name> 
      <description/> 
      <address>1</address> 
      <active>false</active>    
      <doorCodes/> 
      </dac> 
      <full-path>Door List/Company/HHH Panel</full-path> 
      <nodes/> 
     </nodes> 
     </oneDoorController> 
    </nodes> 
    </folder> 
</installationTree> 
+0

你想在'dac`標籤中的*或*之後加上`name`標籤嗎? – 2011-12-14 10:38:23

+2

您發佈了無效的XML。請糾正它。 – adatapost 2011-12-14 10:39:35

回答

3

您需要加載XML文檔並編寫@Henk Holterman建議的語句。

string file = @"c:\file.xml"; 
XDocument doc = XDocument.Load(file); 
var names= doc.Root.Descendants("dac").Elements("name"); 

foreach (var t in names) 
    Console.WriteLine(t.Value); 
2

喜歡的東西

var names = doc.Root.Descendants("dac").Elements("name"); 

這是假定每個<dac>包含至多1 <name>元素。