FIX: DataSet.WriteXML 메서드는 과학적 표기법으로 10진수 값으로 출력하고, System.FormatException 예외 후속 DataSet.ReadXML 메서드 호출이 발생합니다.

기술 자료 번역 기술 자료 번역
기술 자료: 321542 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

스키마 특성 또는 # NUM 같은 소수 값 가진 요소가 포함된 XML 문서를 사용할 때 해당 특성 또는 요소 decimal로 표시합니다. DataSet.ReadXML 메서드를 사용하여 XML 파일을 읽을 수 있으며 다음 DataSet.WriteXML 메서드는 값을 다시 XML 파일에 쓸 수 있으면 출력 값을 과학적 표기법으로 포함되어 있습니다. DataSet.ReadXML 메서드를 다시 사용하는 경우 다음과 같은 예외 오류 메시지가 나타날 수 있습니다.
System.FormatException - 입력 문자열의 형식이 잘못되었습니다.

원인

10진수를 쓸 때 DataSet.WriteXML 메서드는 내부적으로 Decimal.ToString 메서드를 호출합니다. Decimal.ToString 메서드는 10진수를 # NUM 같은 과학 표기법을 씁니다. DataSet 개체 과학적 표기법으로 10진수 값으로 읽을 수에 대한 NumberStyles 열거형을 설정할 수 없습니다. 따라서 DataSet.ReadXML 메서드를 사용하면 읽을 수는 FormatException 예외가 발생하는 데이터 집합으로 백업합니다.

해결 방법

지원되는 핫픽스를 이제 Microsoft에서 사용할 수 있지만 이 문서에서 설명하는 문제를 해결하기 위한 것일 뿐입니다. 이러한 특정 문제가 발생하는 시스템에만 적용해야. 이 핫픽스는 나중에 추가 테스트를 받아야 할 수도 있습니다. 따라서 이 문제의 영향이 심각하지 않으면 이 핫픽스가 포함된 다음 서비스 팩이 나올 때까지 기다리는 것이 좋습니다.

이 문제를 즉시 해결하려면 핫픽스를 구하려면 Microsoft 기술 지원 서비스에 문의하십시오. Microsoft 고객기술지원부 전화 번호 및 지원 비용에 대한 정보를 전체 목록은 다음 Microsoft 웹 사이트를 방문하십시오.
http://support.microsoft.com/contactus/?ws=support
참고 Microsoft 기술 지원 전문가가 특정 업데이트로 문제를 해결할 수 있다고 판단하는 경우, 일반적으로 지원 호출에 발생하는 비용이 취소될 수 있습니다. 추가 지원 질문과 문제에는 특정 업데이트가 필요하지 않은 지원 비용이 적용됩니다.이 핫픽스의 영어 버전은 다음 표에 나열된 파일 특성(또는 그 이후의 파일 특성)이 있습니다. 이러한 파일의 시간과 날짜는 UTC (협정 세계시) 로 나열됩니다. 파일 정보에서는 현지 시간으로 변환됩니다. UTC와 로컬 시간의 차이를 알려면 제어판의 날짜 및 시간 도구에서 표준 시간대 탭을 사용하십시오.
   Date         Time   Version       Size       File name
   -----------------------------------------------------------
   03-May-2002  02:17  1.0.3705.271  1,294,336  System.xml.dll   

해결 과정

스키마가 실수 대신 문자열 값을 표시할 수 및 AllowExponent NumberStyles 플래그로 Decimal.Parse 메서드를 사용하여 10진수 숫자 값을 해당 문자열 변환할 수동으로 수 있습니다.

현재 상태

Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열된 Microsoft 제품에서 이 문제를 확인했습니다.

추가 정보

Windows Mobile 기반 스마트폰에 GPRS 연결이 구성되어 있는지 확인합니다

이 메서드는 읽기, 쓰기 및 XML에서 10진수 값을 읽을 수 DataSet 개체를 사용하여 문서:
  1. 새 Microsoft Visual C# .NET 콘솔 응용 프로그램을 만듭니다.
    1. Microsoft Visual Studio .NET 시작하십시오.
    2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트 를 클릭하십시오.
    3. 프로젝트 형식 에서 Visual C# 프로젝트 를 클릭한 다음 템플릿 에서 콘솔 응용 프로그램 을 누릅니다. 기본적으로 Class1 라는 클래스를 만들었습니다.
  2. 다음 추가 Class1.cs 파일의 시작 부분에 using 문을:
    using System.Data;
    using System.Xml; 
    
  3. Class1.cs:
    DataSet ds = new DataSet();
    ds.ReadXmlSchema("..\\..\\XMLSchema1.xsd");
    ds.ReadXml("..\\..\\XMLFile1.xml");
    ds.WriteXml("..\\..\\XMLFile1.xml");		
    ds.ReadXml("..\\..\\XMLFile1.xml");
    
  4. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로, 추가 를 가리킨 다음 새 항목 추가 클릭하십시오. 새 항목 추가 상자가 나타납니다.
  5. XML 스키마템플릿 클릭한 다음 열기 를 클릭하십시오. 기본적으로 XMLSchema1이 만들어집니다.
  6. XML 필드에 전환한 다음 해당 코더 다음 코드로 바꿉니다:
    <?xml version="1.0" standalone="yes"?>
    <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
      <xs:element name="NewDataSet" msdata:IsDataSet="true">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="Table">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="name" type="xs:string" minOccurs="0" />
                  <xs:element name="tax" type="xs:decimal" minOccurs="0" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    
  7. 4단계를 반복하여 XML 파일템플릿 클릭한 다음 열기 를 클릭하십시오. 기본적으로 XMLFile1이 만들어집니다.
  8. 코드를 다음 코드로 바꿉니다:
    <?xml version="1.0" standalone="yes" ?>
    <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    	<NewDataSet>
    		<Table diffgr:id="Table1" msdata:rowOrder="0">
    			<name>test </name>
    			<tax>0.00001</tax>
    		</Table>
    		<Table diffgr:id="Table2" msdata:rowOrder="1">
    			<name>234</name>
    			<tax>12</tax>
    		</Table>
    	</NewDataSet>
    </diffgr:diffgram>
    
  9. 디버그 메뉴에서 시작 을 클릭하십시오.
"현상" 절에 나와 있는 오류 메시지가 나타납니다.

속성

기술 자료: 321542 - 마지막 검토: 2005년 10월 11일 화요일 - 수정: 1.6
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 서비스 팩 1
  • Microsoft .NET Framework 1.0 서비스 팩 2
키워드:?
kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbprogramming kbschema kbxml kbqfe kbbug kbfix KB321542 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com