XML belgesinde Low-Order ASCII karakterleri bulunduğunda hata iletisi

Bu makale, XML belgesinde Low-Order ASCII karakterleri bulunduğunda oluşan sorunu çözmenize yardımcı olur.

Orijinal ürün sürümü: Microsoft XML
Özgün KB numarası: 315580

Belirtiler

MsXML ayrıştırıcısının 3.0 veya sonraki sürümlerini kullanarak bazı düşük sıralı yazdırılamayan ASCII karakterleri (yani ASCII 32'nin altındaki karakterler) içeren XML belgelerini ayrıştırmaya çalıştığınızda, aşağıdaki hata iletisini alabilirsiniz:

Metin içeriğinde Geçersiz bir karakter bulundu.

Neden

MSXML ayrıştırıcısının 3.0 ve sonraki sürümleri, World Wide Web Consortium (W3C) XML dil belirtimi tarafından tanımlanan geçerli XML karakter aralıklarını kesinlikle zorunlu kılabilir. MSXML'nin 3.0 veya sonraki sürümleri kullanılarak ayrıştırılan XML belgeleri, tanımlı geçerli XML karakter aralıklarının dışında kalan karakterler içeremez. Daha Fazla Bilgi bölümünde listelenen aralıklardaki düşük sıralı yazdırılamayan ASCII karakterleri geçerli XML karakterleri değildir. Bu karakterlerin örneklerini içeren bir XML belgesi W3C belirtimleriyle uyumlu değildir ve MSXML'nin 3.0 ve sonraki sürümleriyle başarıyla ayrıştırılamaz.

Çözüm

Bu sorunu çözmek için, düşük sıralı yazdırılamayan ASCII karakterlerinin örneklerini kaldırın veya karakterleri boşluk karakteri (ASCII 32, onaltılık #x20) gibi alternatif geçerli bir karakterle değiştirin. Bu çözüm, XML belgesini W3C belirtimleriyle uyumlu hale getirir. Ancak, bu karakterlerin örneklerinin kaldırılması veya değiştirilmesi, verileri kullanan ve karakterlerin önemli olduğu diğer uygulamaları etkileyebilir. Bu tür ek etkiler yalnızca test yoluyla tanımlanabilir ve belirli bir duruma uygun bir düzeltme veya geçici çözüm uygulanarak ele alınması gerekir.

Daha fazla bilgi

MSXML ayrıştırıcısının 2.6 ve önceki sürümleri, XML belgelerinin W3C geçerli XML karakter aralıklarının dışında kalan düşük sıralı yazdırılamayan ASCII karakterleri içermesine izin verir. Ancak, MSXML ayrıştırıcısının 3.0 ve sonraki sürümlerinin tasarımı, W3C XML dil belirtiminde tanımlanan geçerli XML karakter aralıklarını kesin olarak zorunlu kılmak için değiştirilmiştir. Uyumlu olmayan XML belgelerinin tanımlanabilmesi için bu tasarım değişikliği gereklidir.

W3C XML dil belirtimleri 1.0 tarafından tanımlanan geçerli XML karakterleri ve karakter aralıkları (onaltılık değerler) aşağıdadır:

#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

MsXML sürüm 3.0 ve üzeri tarafından reddedilen düşük sıralı yazdırılamayan ASCII karakterleri için karakter aralıkları aşağıdadır:

#x0 - #x8 (ASCII 0 - 8)
#xB - #xC (ASCII 11 - 12)
#xE - #x1F (ASCII 14 - 31)

Bu tasarım değişikliği aşağıdaki kullanıcıları ve uygulamaları etkileyebilir:

  • Internet Explorer kullanıcıları: Belirtilen düşük değerin bir veya daha fazla örneğini içeren XML belgelerine göz atmak ve bunları görüntülemek için Internet Explorer 5.5 ve önceki sürümlerini (ve MSXML 3.0'ı Değiştirme modunda yüklememiş olan) kullanıcılar Internet Explorer 6.0 MSXML 3.0 SP2'yi Değiştirme modunda yüklediğinden ve XML belgelerini ayrıştırmak için kullandığından, yazdırılamayan ASCII karakterleri Internet Explorer 6.0'a yükselttikten sonra hata iletisiyle karşılaşır.
  • MDAC ve ADO kullanıcıları: Belirtilen düşük sıralı yazdırılamayan ASCII karakterlerinin bir veya daha fazla örneğini içeren ADO kalıcı XML belgelerini ADO Recordset nesnelerine yükleyen geliştiriciler ve kullanıcılar, MDAC 2.7'ye yükselttikten sonra hata iletisiyle karşılaşır çünkü MDAC 2.7, ADO 2.7 Recordset nesnesinin kullandığı MSXML ayrıştırıcısının sürümü olan MSXML 3.0 SP2'yi yükler.
  • MSXML Belge Nesne Modeli (DOM) kullanan uygulamalar: XML belgelerini ayrıştırmak için kullanılan MSXML DOM nesnelerinin örneğini oluşturmak için sürümden bağımsız PROGIDs olarak kullanılan uygulamalar, MSXML 3.0 veya hizmet paketlerinden biri Değiştirme modunda yüklendiğinde veya kod MSXML 3.0 veya 4.0 sürümünü PROGIDskullanacak şekilde değiştirildiğinde belirtilen hatayı oluşturur.

Başvurular

Belirtiler bölümünde belirtilen hata iletisi için diğer bilinen nedenler ve geçici çözümler hakkında daha fazla bilgi için bkz: