2017-02-16 2 views
1

클래스를 XML 문서에 저장하려고합니다. 클래스는 다음과 같습니다XML 파일에 일련 번호를 지정하면 잘못된 XML 문서가 생성됨 (11,12)

Settings MySettings = new Settings(); 
string MySettingsFile = @"settingsfile.xml"; 
... 
FileStream outFile = File.Open(MySettingsFile, FileMode.OpenOrCreate); 
XmlSerializer formatter = new XmlSerializer(MySettings.GetType()); 
formatter.Serialize(outFile, MySettings); 
outFile.Close(); 

데이터가 저장되지만 마지막에 하나의 문제를 :

public class Settings 
{ 
    public LDAP LDAP; 
    public Miscellaneous Miscellaneous; 
} 

public class LDAP 
{ 
    public bool LoadLDAPData; 
    public bool ShowLDAPRoutingMessage; 
} 

public class Miscellaneous 
{ 
    public bool MinusBeforeQuestion; 
    public bool MinusBeforeDescription; 
} 

데이터가 IST이를 통해 저장

<Settings...> 
... 
</Settings>>> 

을 수 이유를 말해줘?

+0

이것은 속입니다. 그러나'OpenOrCreate'를'Create'로 바꾸면됩니다. –

+0

@klashar - 아니요. –

답변

2

작성중인 내용이 파일의 기존 내용보다 짧아서 일부 텍스트가 끝에 남기 때문에 이런 현상이 발생합니다. (파일을 열고 파일이 존재하는 경우 그대로의 내용을 잎)

대신 FileMode.OpenOrCreate 사용 FileMode.Create :

FileStream outFile = File.Open(MySettingsFile, FileMode.Create); 

설명 FileMode.Create의 :

운영 체제가 생성되도록 지정

새 파일. 파일이 이미 존재하면 덮어 씁니다. 이를 위해서는 FileIOPermissionAccess.Write 권한이 필요합니다. FileMode.Create는 파일이 없으면 CreateNew를 사용하는 것과 같습니다. 그렇지 않으면자를 사용하십시오. 파일이 있지만 숨김 파일이면 UnauthorizedAccessException 예외가 발생합니다.

+0

완벽합니다. –

관련 문제