2017-12-27 14 views
1

일부 조건을 사용하여 XML 목록을 비 직렬화하여 데이터를 가져 오려고합니다. 그러나 나는 그것에 대한 적절한 해결책을 얻지 못했습니다. 다음은 내 코드는 다음과 같습니다C에서 조건부 비 직렬화 XML 목록을 가져 오는 방법 #

다음
public List<LinkInfo> GetLinks(string entityType, string relatedEntityType, string linkType) 
    { 
     try 
     { 
      XmlSerializer deserializer = new XmlSerializer(typeof(Project)); 
      TextReader reader = new StreamReader(@"E:\\SampleMetaData.xml"); 
      object obj = deserializer.Deserialize(reader); 

      Project xmlData = (Project)obj; 
      return xmlData.Module.Links.Link.Select(field => new LinkInfo 
      { 
       EntityId = field.EntityId, 
       EntityType = field.EntityType, 
       RelatedEntityId = field.RelatedEntityId, 
       RelatedEntityType = field.RelatedEntityType, 
       LinkType = field.LinkType 
      }).ToList();    
     } 
     catch(Exception ex) 
     { 
      Console.WriteLine("Error in",ex); 
      throw; 
     } 

    } 

내 XML 파일 형식 :

나는이 작업을 수행 할 수있는 방법 where LinkType="Inlink" EntityType="Doors_Module1" and RelatedEntityType="Doors_Module2"

같이 가져 오기 할

<Links> 
     <Link EntityId="5" EntityType="Doors_Module1" RelatedEntityId="7" RelatedEntityType="Doors_Module2" LinkType="InLink"/> 
     <Link EntityId="6" EntityType="Doors_Module1" RelatedEntityId="8" RelatedEntityType="Doors_Module2" LinkType="InLink"/> 
     <Link EntityId="7" EntityType="Doors_Module1" RelatedEntityId="9" RelatedEntityType="Doors_Module2" LinkType="External"/> 
    </Links> 

? 고맙습니다.

+0

을 위해 일해야합니까? 그럴 경우'.Where (x => x.LinkType == 'Doors_Module1')' –

+0

도 간단하게 사용할 수 있습니다. LinkInfo 클래스도 공유 할 수 있습니까? –

+0

당신은 foreach 또는 루프'obj. [i] .LinkType' kind off를 사용할 수 있습니다. –

답변

1
return xmlData.Module.Links.Link 
.Where(x=>.LinkType == 'Inlink' && x.EntityType == 'Doors_Module1') 
.Select(field => new LinkInfo 
     { 
      EntityId = field.EntityId, 
      EntityType = field.EntityType, 
      RelatedEntityId = field.RelatedEntityId, 
      RelatedEntityType = field.RelatedEntityType, 
      LinkType = field.LinkType 
     }).ToList();  

이 코드는 당신이 XML 클래스의 직렬화 권리를 사용하여 생각하면

+1

감사합니다 @Arijit Mukherjee, 내가 원하는대로 작동 .... 다시 한번 감사드립니다 ... –

+1

도움이 된 것을 기쁘게 생각합니다 upvote 잊지 마세요 그리고 해결로 표시, 당신의 목적을 해결하는 경우 –