2014-04-01 3 views
1

두 목록을 serialize하고 xml 파일에 쓰려면 도움이 필요합니다. 내가 노력 코드는xmlSerialize 다른 개체의 두 목록

XmlSerializer xs = new XmlSerializer(typeof(List<OtherAction>)); 
XmlSerializer xsActions = new XmlSerializer(typeof(List<Action>)); 
using (StreamWriter sw = new StreamWriter("actions.xml")) 
{ 
    xs.Serialize(sw, listOtherActions); 
    xsActions.Serialize(sw, listActions); 
} 

이지만 listOtherActions, 다음 listActions를 기록합니다. 그래서 XML 파일에 2 개의 루트를 만듭니다. 내가하고 싶은 것은 내부에 하나의 루트 노드와 두 개의리스트 만 가지고있는 것입니다.

+0

두 개의 다른 개체가있는 경우 두 개의 다른 개체로 직렬화하십시오. 또는 각 직렬화를 문자열에 작성하고 일부 XML에 수동으로 입력하십시오. – Tarec

+0

두 개의 다른 객체로 직렬화하면 어떤 의미입니까? 나는 xmlserializer로 새롭다 – Yushox

+0

그냥 별도로 deserialize. – Tarec

답변

1

두 개의 List 유형을 모두 포함하는 단일 클래스를 만들어 해당 클래스를 직렬화하지 않는 이유는 무엇입니까? 아래처럼.

public class Combined 
{ 
public List<OtherAction> otherActions{get; set;} 
public List<Action> actions{get; set;} 
} 


XmlSerializer xs = new XmlSerializer(typeof(List<Combined>)); 
using (StreamWriter sw = new StreamWriter("CombinedActions.xml")) 
{ 
    xs.Serialize(sw, listCombinedActions); 
} 
+0

내 "작업"목록은 10 개 이상의 클래스가있는 다형성 목록입니다. 나는 "Combined"클래스가 좋은 선택인지 여부를 모른다. 그리고 수업 시간에 모든 것을 가져 오기 위해 xml 파일을 비 직렬화해야합니다. 나는 당신의 해결책으로 그 일을 할 수 있을지 확신하지 못합니다. – Yushox

+0

당신이 잘 모르겠다면 그것을 시도하지 마십시오. 그냥 시도해보십시오 :) – yogi

+0

결합 된 객체를 만드는 대신 두 목록을 모두 포함하는 클래스를 만들었습니다. 당신의 솔루션이 나를 데려왔다. 그래서 고마워. :) – Yushox