반응형
✔ 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로 하는것도 방법이다.
감사합니다.
반응형
'Programming > C#' 카테고리의 다른 글
[C#] String 데이터를 특정 문자, 문자열로 나누기 (String Split) (2) | 2022.01.06 |
---|---|
[Unity3D, C#] 프로그램 윈도우 창 최소화, 최대화, 맨앞으로 활성화 (4) | 2021.11.10 |
[C#, Unity3D] 레지스트리를 활용한 컴퓨터에 설치된 프로그램 확인 및 Path 가져오기 - Microsoft.Win32.Registry (125) | 2021.10.02 |
[C#] 클래스 멤버 간 데이터 비교 - IEqualityComparer (4) | 2020.11.17 |
[C#] 클래스 라이브러리(.dll) 프로젝트에서 Winform 사용하기 (4) | 2020.06.11 |
댓글