2011-08-08 2 views
1

특정 구조의 xml 파일에 쓰려고하는데 문제가 발생했습니다. 몇 가지 XElement를 XML의 특정 XElement에 쓰려고합니다. 예 :XML 작성 문제

 foreach (XMLFieldInfo Field in XMLFields) 
      Fields.Add(new XElement("Field", new XElement("Name", Field.FieldID), new XElement("InclusionItems", Field.InclusionListToWriteToXML), new XElement("ExclusionItems", Field.ExclusionListToWriteToXML))); 

여기서 xml의 다른 노드에 하위 노드로 추가하려는 여러 XElements를 빌드합니다. 위에서 생성 한 목록의 각 요소가 추가됩니다하지만 난 그래서 내가 슈퍼 노드에 추가 할 수있는 방법을 찾을 수 없습니다 얼마나 많은 요소를 잘 모릅니다 곳

XElement LockboxConfigTree = new XElement("Student", new XElement("ID", cmbID.Text.Trim()), .................); 

은 ......입니다.

위의 노드는 위에서 만든 하위 노드를 추가하려고합니다. 문제는, 나는 XML은 다음과 같이 표시됩니다 그래서 결국 올바른 논리를 얻을 수가 캔트 :

<Student> 
    <ID></ID> 
    <Field> 
    <Name></Name> 
    <InclusionList></InclusionList> 
    <ExclusionList></InclusionList> 
    </Field> 
</Student> 

답변

2

XElement constructorenumerable 인수를 지원합니다.

당신은 당신의 Fields 변수 통과해야 :

XElement LockboxConfigTree 
    = new XElement("Student", 
      new XElement("ID", cmbID.Text.Trim()), 
      from field in XMLFields 
      select new XElement("Field", 
        new XElement("Name", field.FieldID), 
        new XElement("InclusionItems", 
         field.InclusionListToWriteToXML), 
        new XElement("ExclusionItems", 
         field.ExclusionListToWriteToXML))); 
: LINQ와 함께, 당신은 심지어 Fields 변수가 필요하지 않습니다, 사실

XElement LockboxConfigTree = new XElement("Student", 
           new XElement("ID", cmbID.Text.Trim()), 
           Fields);