본문 바로가기
Programming/C#

[C#] Xml 로드 할때 많이 발생되는 에러 [해결법]

by 타임박스 2021. 11. 9.
반응형


✔  Xml Load Error 

1. Data at the root level is invalid. Line1, position 1

2. XmlException: There is no Unicode byte order mark. Cannot switch to Unicode.



1. Data at the root level is invalid. Line1, position 1

- 이 에러는 <?xml version="1.0" encoding="utf-8"?> 에서 encoding 관련 발생되는 문제로 해결법은 아래와 같다.

//발생 루트
XmlDocument xml = new XmlDocument();
xml.LoadXml(xmlString);

//Solution
XmlDocument xml = new XmlDocument();
xml.Load(xmlString);

 

엄청 간단하게 해결되는 문제... LoadXml 대신 Load 함수를 사용하면 에러가 발생되지 않음.

 

2. XmlException: There is no Unicode byte order mark. Cannot switch to Unicode.

- 위의 수정코드에서 xml.Load 했을때 이런 오류가 나타날때가 있다. 2번 에러에 대한 해결책은 아래와같다.

//많이 발생되는 경우
XmlSerializer ser = new XmlSerializer(typeof(class));
TextWriter writer = new StreamWriter(filename);
ser.Serialize(writer, class);

//Serialize된 파일을 로드 -> 에러발생
XmlDocument xml = new XmlDocument();
xml.Load(filename);

//Solution
XmlDocument xml = new XmlDocument();
xml.LoadXml(File.ReadAllText(filename));

//혹은 Deserialize로 하는것도 방법이다.

 

 

감사합니다.

반응형

댓글