2013-05-06 2 views
1

C#에서 XML 파일을 쿼리하는 것이 처음입니다. 어떤 도움을 주시면 감사하겠습니다. 나는이 같은 테이블에 자신의 값으로 입력과 출력에서 ​​변수를 작성해야LINQ XML을 사용하여 특성 값 쿼리

<Point> 
     <Statement> 
     <Type /> 
     <FullCondtion /> 
     <ExpressionList /> 
     </Statement> 
     <TestList> 
     <Test> 
      <Inputs> 
      <Variable Name="u1_count" Value="0" /> 
      <Variable Name="u1_flag" Value="2" /> 
      <Variable Name="ON" Value="1" /> 
      <Variable Name="OFF" Value="0" /> 
      <Variable Name="u1_ch" Value="0" /> 
      <Variable Name="u1_index" Value="3" /> 
      </Inputs> 
      <Outputs> 
      <Variable Name="u1_count" Value="0" /> 
      <Variable Name="u1_flag" Value="0" /> 
      <Variable Name="ON" Value="1" /> 
      <Variable Name="OFF" Value="0" /> 
      <Variable Name="u1_ch" Value="0" /> 
      <Variable Name="u1_index" Value="0" /> 
      </Outputs> 
     </Test> 
     <Test> 
      <Inputs> 
      <Variable Name="u1_count" Value="0" /> 
      <Variable Name="u1_flag" Value="2" /> 
      <Variable Name="ON" Value="1" /> 
      <Variable Name="OFF" Value="0" /> 
      <Variable Name="u1_ch" Value="0" /> 
      <Variable Name="u1_index" Value="3" /> 
      </Inputs> 
      <Outputs> 
      <Variable Name="u1_count" Value="0" /> 
      <Variable Name="u1_flag" Value="0" /> 
      <Variable Name="ON" Value="1" /> 
      <Variable Name="OFF" Value="0" /> 
      <Variable Name="u1_ch" Value="0" /> 
      <Variable Name="u1_index" Value="0" /> 
      </Outputs> 
     </Test> 
     </TestList> 
     <TestList> 
     <Test> 
      <Inputs> 
      <Variable Name="u1_count" Value="0" /> 
      <Variable Name="u1_flag" Value="2" /> 
      <Variable Name="ON" Value="1" /> 
      <Variable Name="OFF" Value="0" /> 
      <Variable Name="u1_ch" Value="0" /> 
      <Variable Name="u1_index" Value="3" /> 
      </Inputs> 
      <Outputs> 
      <Variable Name="u1_count" Value="0" /> 
      <Variable Name="u1_flag" Value="0" /> 
      <Variable Name="ON" Value="1" /> 
      <Variable Name="OFF" Value="0" /> 
      <Variable Name="u1_ch" Value="0" /> 
      <Variable Name="u1_index" Value="0" /> 
      </Outputs> 
     </Test> 
     <Test> 
      <Inputs> 
      <Variable Name="u1_count" Value="0" /> 
      <Variable Name="u1_flag" Value="2" /> 
      <Variable Name="ON" Value="1" /> 
      <Variable Name="OFF" Value="0" /> 
      <Variable Name="u1_ch" Value="0" /> 
      <Variable Name="u1_index" Value="3" /> 
      </Inputs> 
      <Outputs> 
      <Variable Name="u1_count" Value="0" /> 
      <Variable Name="u1_flag" Value="0" /> 
      <Variable Name="ON" Value="1" /> 
      <Variable Name="OFF" Value="0" /> 
      <Variable Name="u1_ch" Value="0" /> 
      <Variable Name="u1_index" Value="0" /> 
      </Outputs> 
     </Test> 
     </TestList> 
    </Point> 
    </Pattern> 
</CodeAnalyzerResults> 

: 미리 감사드립니다 ..

나는이 XML 파일이

입력을

u1_count 0 0 0 0

u1_flag 2 2 2 2

... 3 3 3 3

과 동일한 출력에 대해 수행된다

u1_index .. 어떻게 각 변수의 입력 값과 출력값을 얻을 행들을 작성 하는가

나는이 기사를 읽고 .. http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/reading-xml-file-through-linq-a-few-tips/하지만, 난 여전히 그것을 할 수있는 방법을 생각할 수 없다

답변

1
당신은 XML에 LINQ를 사용할 수 있습니다

(Sytem.Xml.Linq 어셈블리)

XDocument doc = XDocument.Load("xml uri"); 

IEnumerable<string> inputs = 
         from input in doc.Descendants("Inputs") 
         from el in input.Descendants("Variable") 
         let nameAtt = el.Attribute("Name") 
         let valueAtt = el.Attribute("Value") 
         where nameAtt != null && valueAtt != null 
         group valueAtt.Value by nameAtt.Value into grp 
         let values = string.Join(" ", grp.ToArray()) 
         select string.Format("{0} {1}", grp.Key, values); 

outputs에 대해서도 마찬가지입니다. AT & T는 값 [편집]에 의해

[편집] 그룹으로 이동 "변수"노드

+0

감사합니다. 그러나 코드에서 사용하려고하면 두 가지 오류가 발생했습니다. 인수 2 : 'System.Linq.IGrouping '에서 'string []'으로 변환 할 수 없으며 가장 오버로드 된 메서드가 'string.Join 문자열, 문자열 []) '에 잘못된 인수가 있습니다. 이유가 무엇입니까? BTW, 나는 foreach 루프를 사용하여 Excel 파일에 이들을 쓰고있을 것입니다 .. 미리 감사드립니다. – jaqui

+0

'.ToArray'를 추가하여 코드를 사용할 수있게되어 'let values ​​= string.Join ("", grp.ToArray()) '하지만 입력'반환 "Enumeration 결과가 없습니다".. 내가 뭘 잘못하고있어? – jaqui

+0

죄송합니다. 뭔가를 놓쳤습니다. "입력"으로 이동하면 "변수"요소로 이동해야합니다. 나는 그 대답을 편집했고'.ToArray' 누락에 대한 수정을 추가했다. 이번에는 테스트 해 보았습니다 .-P – polkduran

관련 문제