Düzeltme: DataSet.WriteXML yöntemi bilimsel gösterimde ondalık bir değer verir ve System.FormatException bir özel durum sonraki DataSet.ReadXML yöntem çağrıları neden olur.

Makale çevirileri Makale çevirileri
Makale numarası: 321542 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Bir özniteliğin veya öğenin 0,00001 gibi ondalık bir değer içeren bir XML belgesi kullandığınızda, şema, bir öznitelik veya öğe bir ondalık sayı işaretler. Bir XML dosyası okunamadı DataSet.ReadXML yöntemini kullanın ve sonra DataSet.WriteXML yöntemi değeri XML dosyasına yazmak için kullandığınız, çıkış değerleri bilimsel gösterimde bir değer içerir. DataSet.ReadXML yöntemini tekrar kullanırsanız, aşağıdaki özel durum hata iletisi alırsınız:
System.FormatException - giriş dizesi doğru biçimde değildi.

Neden

DataSet.WriteXML yöntemi, ondalık sayılar yazdığında dahili Decimal.ToString yöntemini ça??r?r. Decimal.ToString yöntemi 0,00001 gibi ondalık sayıları, bilimsel gösterimde yazar. Bilimsel gösterim, ondalık değer okunabilmesi için yapmak DataSet nesnenin NumberStyles numaralandırma ayarlanamaz. Bu nedenle, okumaya DataSet.ReadXML yöntemini kullandığınızda numarayı yeniden bir veri kümesinin FormatException bir özel durumu oluşuyor.

Çözüm

Desteklenen bir düzeltme Microsoft'tan edinilebilir, ancak yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Düzeltmeyi yalnızca bu sorunla karşılaşan sistemlere uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, sorundan ciddi olarak etkilenmiyorsanız, bu düzeltmeyi içeren bir sonraki hizmet paketini beklemeniz önerilir.

Bu sorunu hemen çözmek için, düzeltmeyi edinmek üzere Microsoft Ürün Destek Hizmetleri'ne başvurun. Microsoft Ürün Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve Saat aracında saat dilimi sekmesini kullanın.
   Date         Time   Version       Size       File name
   -----------------------------------------------------------
   03-May-2002  02:17  1.0.3705.271  1,294,336  System.xml.dll   

Pratik Çözüm

Değeri, şemadaki bir ondalık sayı olarak yerine bir dize olarak işaretleyebilirsiniz ve AllowExponent NumberStyles bayrağıyla Decimal.Parse yöntemini kullanarak dize için ondalık bir sayı değeri el ile dönüştürebilirsiniz.

Durum

Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

Bu yöntem, okumak, yazmak için ve bir XML'DEN ondalık değeri okunamıyor bir DataSet nesnesi kullanan belge:
  1. Yeni bir Microsoft Visual C# .NET konsol uygulaması oluşturun.
    1. Microsoft Visual Studio .NET'i başlatın.
    2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
    3. Altında Project Types, Visual C# Projects ' ı tıklatın ve şablonları altında Console Application ' ı tıklatın. Class1 adlı bir sınıf, varsayılan olarak oluşturulur.
  2. Aşağıdaki ekleyin Class1.cs dosyanın başında deyimini kullanarak:
    using System.Data;
    using System.Xml; 
    
  3. Ana alana Class1.cs:
    DataSet ds = new DataSet();
    ds.ReadXmlSchema("..\\..\\XMLSchema1.xsd");
    ds.ReadXml("..\\..\\XMLFile1.xml");
    ds.WriteXml("..\\..\\XMLFile1.xml");		
    ds.ReadXml("..\\..\\XMLFile1.xml");
    
  4. Solution Explorer'da (Çözüm Gezgini), proje adını sağ tıklatın, sonra da Ekle işaret ve sonra Yeni Öğe Ekle'yi tıklatın. Add New ıtem kutusu görüntülenir.
  5. Şablonları altında XML şeması ' nı tıklatın ve sonra ' ı tıklatın. Varsayılan olarak, XMLSchema1 oluşturulur.
  6. XML alana geçin ve sonra da kodlayıcı aşağıdaki kodla değiştirin: <a1>
    <?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. Adım 4'ü yineleyin, şablonları altında XML dosyasını tıklatın ve sonra ' ı tıklatın. Varsayılan olarak, XMLFile1 oluşturulur.
  8. Kodu aşağıdaki kodla değiştirin:
    <?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. Hata Ayıkla) menüsünde, Başlat ' ı tıklatın.
"Belirtiler" bölümünde değinilen hata iletisini alırsınız.

Özellikler

Makale numarası: 321542 - Last Review: 11 Ekim 2005 Salı - Gözden geçirme: 1.6
Bu makaledeki bilginin uygulandığı durum:
  • 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 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
Anahtar Kelimeler: 
kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbprogramming kbschema kbxml kbqfe kbbug kbfix KB321542 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:321542

Geri Bildirim Ver

 

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