2012-10-15 2 views
0

나는 liyingle 비트 녹색 절약 lineding cml에 XML과. 내가 디자인 구성 개체의 값이 각 요소를 업데이트 할XML 요소 컬렉션을 업데이트하는 방법은 무엇입니까?

<SourceFolder>C:\CSF_Packages</SourceFolder> 
<DestinationFolder>C:\Inetpub</DestinationFolder> 
<CopyLookups>True</CopyLookups> 
<CopyImages>False</CopyImages> 
<ImageSourceFolder>None</ImageSourceFolder> 
<ImageDesinationFolder>None</ImageDesinationFolder> 

: 같은 요소가있는 myElements 변수에

public static void EditConfiguration (DesignConfiguration design) 
    { 
     XDocument configXml = XDocument.Load(configXMLFileName); 
     var updateData = configXml.Root.Elements("Design").Where(element => (String)element.Attribute("name") == design.DesignName).FirstOrDefault(); 

     if (updateData != null) 
     { 
      var myElements = updateData.Elements(); //All the elements under th Design node 
      configXml.Save(configXMLFileName);  
     }    
    } 

: 이것은 내 코드입니다. 내가 개체에서 하나 개의 값이 있다면이 그렇게 어렵지 않을 것이다 그러나 값과 같이있다 :

design.SourceFolder design.DesitnationFolder 등

(단지 요소 등). 객체는 위의 요소에 새로운 값을 제공합니다. 그것은 내가 foreach 루프를 사용한다는 것을 나에게 분명하지만 난 그것을 사용하고 결과이 내 foreach 루프입니다

내가 원하는 일 ...되지 않습니다 :이

  foreach (var item in myElements) 
      { 
       item.SetElementValue("SourceFolder", design.SourceFolder); 
      } 

루프에서 프레젠테이션 요구 사항의 한 요소 일 뿐이지 만 더 많은 것을 루프에 넣고 싶었습니다. 그리고 이것은 내가 무엇을 얻을 수 있습니다 :

<SourceFolder>C:\CSF_Packages<SourceFolder>C:\CSF_Packages</SourceFolder></SourceFolder> 
<DestinationFolder>None<SourceFolder>C:\CSF_Packages</SourceFolder></DestinationFolder> 
<CopyLookups>True<SourceFolder>C:\CSF_Packages</SourceFolder></CopyLookups> 
<CopyImages>False<SourceFolder>C:\CSF_Packages</SourceFolder></CopyImages> 
<ImageSourceFolder>C:\Inetpub<SourceFolder>C:\CSF_Packages</SourceFolder></ImageSourceFolder> 
<ImageDesinationFolder>None<SourceFolder>C:\CSF_Packages</SourceFolder></ImageDesinationFolder> 

내가하고 싶은 :

<SourceFolder>new_value_from the DesignConfiguration object from the SourceFolder property</SourceFolder> 
<DestinationFolder>new_value_from the DesignConfiguration object from the Desitnation Folder property</DestinationFolder> 
<CopyLookups>new_value_from the DesignConfiguration object from the CopyLookups property</CopyLookups> 

등등 ... 가 스트레스에 noobie 도와주세요 :) 감사합니다.

+0

당신은 foreach 루프 당신이 기대하는 어떤 결과 어떤 결과를 얻을 수 있습니까? –

+0

내가하고 싶은 정보에 대해 내 게시물을 업데이트했습니다 :) Soryy for that .... –

+0

마지막 XML의 중첩이 완전히 잘못되었습니다. 고쳐주세요. –

답변

0

하위 XElements를 제거한 다음 새 XElement를 부모에 추가해야합니다. 이는 (테스트하지)보십시오 :

public static void EditConfiguration (DesignConfiguration design) 
{ 
    XDocument configXml = XDocument.Load(configXMLFileName); 
    var updateData = configXml.Root.Elements("Design").Where(element => (String)element.Attribute("name") == design.DesignName).FirstOrDefault(); 

    if (updateData != null) 
    { 
     var myElements = updateData.Elements(); //All the elements under th Design node 
     myElements.Remove(); 
     updateData.SetElementValue("SourceFolder", design.SourceFolder); 
     updateData.SetElementValue("DestinationFolder", design.DestinationFolder); 
     updateData.SetElementValue("CopyLookups", design.CopyLookups); 

     configXml.Save(configXMLFileName); 
    }    
} 
관련 문제