2011-12-14 2 views
1

XML에 linq을 사용하여 일부 대형 XML 파일을 구문 분석하려고하지만 정확히 어떻게 할 수 있는지 알 수 없습니다. <dac> 태그 뒤에 오는 모든 <name> 태그를 읽고 싶습니다. 나는 언급해야한다 나는 XMl 파일에 많은 <name> 태그를 가지고있다. 나는 그 중 하나를 <dac> 다음에 읽고 싶다. linq to xml을 사용하여 이것을 어떻게 할 수 있습니까? (SSS, HHH, HHH Panel)linq to xml을 사용하여 XML 구문 분석

<?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' 태그를 넣으시겠습니까? –

+2

잘못된 XML을 게시했습니다. 수정하십시오. – adatapost

+0

@DanielHilgarth dac 태그 블록의 첫 번째 이름 태그 – Am1rr3zA

답변

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"); 

이 1 기껏 <dac> 포함 된 각 가정 같은 : 나는 코드가 나에게 같은 값을 반환 할
: 여기

내 XML 파일의 간단한 샘플입니다 <name> 요소.

+0

+1 자손 ("xxx")은 IEnumerable 을 반환합니다. – adatapost

+0

전체 코드를 작성해주십시오. – Am1rr3zA