2011-01-03 2 views
2

xsd.exe을 사용하여 xsd에서 생성 된 클래스로 XmlSerializer을 사용하고 있습니다. 몇 달 동안 제대로 작동했습니다.직렬화 된 XML의 소수점에서 소수점이 제거되었습니다.

일부 경우 생성 된 XML 파일에 소수점없이 일련의 소수 자릿수가있는 경우가 있습니다. 예 : 12345는 12345로 일련 번호가 지정됩니다.

문제를 재현하지 못했지만 현지화와 관련이 있다고 생각됩니다.

이것은 첫 번째 C# 프로젝트이므로 기본 사항을 간과 할 수 있습니다.

현지화로 인해이 문제가 발생할 수 있습니까?
직렬화 프로세스를 로케일 독립적으로 만들 수 있습니까?

이 문제를 일으킬 수있는 다른 아이디어가 있습니까?

+2

"문제를 재현하지 못했습니다."- 이것이 첫 번째 단계입니다. –

+0

@mitch True 내일 나는 문제가 일어나고있는 사이트를 방문 할 것이지만, 무엇을 찾을 지 아이디어를 갖고 싶다. – MiguelM

답변

2

일부 국가에서는 쉼표를 소수 구분 기호로 사용하고 점을 사용하여 수천을 구분하므로 사용자의 직감이 참일 수 있습니다. float 또는 십진수를 포함하는 다른 데이터 유형을 사용하는 경우 XmlSerializer은 소수 자리를 버리지 않습니다. 그러나 그런 나라에서 문화를 지정하지 않고 The Xml을 읽으면 그 점을 무시할 수 있습니다.

Xml이 한 국가에서 일련 화되고 다른 국가에서 직렬화되면 InvariantCulture과 같이 지정하지 않으면 문제가 발생합니다.

+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다. "deserialization"부분은 실제로 텍스트 파일에서 값을 읽는 사용자 정의 코드입니다. 거기에'.ToDecimal()'이 있었는데, 나는 InvariantCulture를 추가했다. 그리고 그것은 빠른 테스트에서 문제를 해결하는 것으로 보인다. – MiguelM

관련 문제