Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

NASIL yapılır: Visual Basic'te MSXML 4.0 SAX çözümleyici kullanırken, birden çok doğrulama hataları belirle

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 309535
Özet
Bu adım adım makalede, bir XML belgesi ayrıştırmak için bir Microsoft Visual Basic uygulamasında MSXML 4.0 SAX çözümleyici kullandığınızda, birden çok doğrulama hataları belirlemek ve listelemenin nasıl yapılacağını gösterir.

Doğrulama hataları iyi biçimlendirilmiş bir XML belgesi içindeki içeriği, ilgili belge türü tanımı (DTD) ya da şemada tanımlanan yapısına uymayan gösteriyor. MSXML 4.0 Simple API for XML'dir (SAX) ayrıştırıcı için tüm ilk doğrulama hatası oluştuğunda ayrıştırma durdurma yerine bir XML belgesi ayrıştırma sırasında bulduğu doğrulama hataları tanımlamak için yeteneğine sahiptir. Şema doğrulaması ve hataların ayrıntılı özellikleri Trueolarak ayarlamak için onun yerine özellik yöntemini kullanarak bu özellik MSXML 4.0 SAX ayrıştırıcı etkinleştirilebilir.

back to the top

Örnek XSD şema belgesi oluştur

Kitap kataloğunun ilgili verileri depolamak için kullanılan bir XML belgesinin yapısını tanımlamak için kullanabileceğiniz bir XML şema tanımı (XSD) şeması oluşturun. Bunu yapmak için şu adımları izleyin:
  1. Aşağıdaki kodu içeren Books.xsd adlı bir XSD belgesi oluşturmak için Not Defteri'ni kullanın:
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:books" xmlns:b="urn:books">  <xs:element name="catalog" type="b:CatalogData"/>   <xs:complexType name="CatalogData">    <xs:sequence>      <xs:element name="book" type="b:bookdata" minOccurs="0" maxOccurs="unbounded"/>    </xs:sequence>  </xs:complexType>      <xs:complexType name="bookdata">    <xs:sequence>      <xs:element name="author" type="xs:string"/>      <xs:element name="State" type="xs:string"/>      <xs:element name="title" type="xs:string"/>      <xs:element name="genre" type="xs:string"/>      <xs:element name="price" type="xs:float"/>      <xs:element name="publish_date" type="xs:date"/>      <xs:element name="description" type="xs:string"/>          </xs:sequence>    <xs:attribute name="id" type="xs:string"/>  </xs:complexType></xs:schema> 					
  2. C sürücüsünün kök klasöründe Books.xsd Kaydet
back to the top

Örnek XML belgesi oluşturma

  1. Aşağıdaki kodu içeren Books.xml adlı bir XML belgesi oluşturmak için Not Defteri'ni kullanın:
    <?xml version="1.0"?><x:catalog xmlns:x="urn:books">         <book>               <author>Adams</author>      <State>NC</State>      <title>XML Developer's Guide</title>                                <genre>Computer</genre>      <price>No Price data available</price>      <publish_date>2000-10-01</publish_date>         </book></x:catalog>
  2. C sürücüsünün kök klasöründe Books.XML Kaydet
back to the top

Visual Basic uygulaması oluşturma

  1. Visual Basic'te, yeni bir standart exe dosyası projesi oluşturun.
  2. Microsoft XML sürüm 4.0'a proje referansı ekleyin.
  3. Form1'e bir komut düğmesi sürükleyin ve cmdValidateiçin ad özelliğini ayarlayın.
  4. Sınıf modülü projesine ekleyin ve MyValidatoriçin ad özelliğini ayarlayın.

    Bu sınıf modülü gibi SAX Çözümleyici bir XML belgesi ayrıştırma hataları ve Uyarıları girildiğinde çağrılır yöntemleri tanımlar IVBSAXErrorHandler arabirimini uygular. MyValidator nesnesinin örneği bu örnek Books.xml ayrıştırmak için kullanılan SAXXMLReader nesnesinin errorHandler arabirim olarak kullanılır.
  5. MyValidator sınıf modülünde aşağıdaki kodu yapıştırın:
    Option ExplicitImplements IVBSAXErrorHandlerPrivate Sub IVBSAXErrorHandler_error(ByVal oLocator As MSXML2.IVBSAXLocator, _            strErrorMessage As String, ByVal nErrorCode As Long)   WriteErrorToDebugWindow "Error- validation error", strErrorMessage, _         nErrorCode, oLocator.lineNumber, oLocator.columnNumberEnd SubPrivate Sub IVBSAXErrorHandler_fatalError(ByVal oLocator As MSXML2.IVBSAXLocator, _            strErrorMessage As String, ByVal nErrorCode As Long)   WriteErrorToDebugWindow "Fatal error or parsing error", strErrorMessage, _         nErrorCode, oLocator.lineNumber, oLocator.columnNumberEnd SubPrivate Sub IVBSAXErrorHandler_ignorableWarning(ByVal oLocator As MSXML2.IVBSAXLocator, _            strErrorMessage As String, ByVal nErrorCode As Long)End SubPrivate Sub WriteErrorToDebugWindow(strLabel As String, _   strDescription As String, ByVal ErrCode As Long, _   Line As Long, Column As Long)   Debug.Print strLabel + ": (" + CStr(ErrCode) + ") " + _        strDescription & "at " + "line " + _        Str(Line) + ", column " + _        Str(Column) + vbCrLfEnd Sub					
    Bu kod MyValidator sınıf modülünde IVBSAXErrorHandler arabiriminde tanımlanan yöntemleri uygular. Visual Basic komut penceresi için XML belgesi ayrıştırma sırasında karşılaşılan hataları hakkında bilgi yazmak için özel WriteErrorToDebugWindow subprocedure kodda hata ve fatalError yöntemlerini çağırır.

  6. MSXML 4.0 SAXXMLReader nesnesini kullanarak Books.xml örnek XML belgesini ayrıştırmak için cmdValidate komut düğmesinin Tıklat olay yordamını aşağıdaki kodu yapıştırın:
      'Create a SAX reader.  Dim oReader As New MSXML2.SAXXMLReader40  'Create an XML schema cache.  Dim oSC As New MSXML2.XMLSchemaCache40    'Create an instance of the class module.  'that implements the IVBSAXErrorHandler interface  Dim oValidator As New MyValidator    'Add the schema file to the schema cache.    oSC.Add "urn:books", "c:\books.xsd"    'Configure the SAX reader to validate the XML document.  oReader.putFeature "schema-validation", True  oReader.putFeature "exhaustive-errors", True  oReader.putProperty "schemas", oSC  'Assign an instance of the MyValidator class to  'the errorHandler property of the SAX reader.  Set oReader.errorHandler = oValidator    'Parse and validate the file.  oReader.parseURL "c:\books.xml"  Debug.Print "End of parsing and validation"  					
  7. XML belgesini doğrulamak için SAX okuyucu yapılandırmak için kullanılan kod gözden geçirin. Nesnenin şema doğrulaması ve hataların ayrıntılı özellikleri True parser XML belgesini belirtilen XSD şemaya karşı doğrulamak ve sonra ilişkili errorHandler arabirimi kodu tanımlayabilir ve tüm doğrulama hatalarını rapor böylece bile ilk hatayla ayrıştırma devam etmek istemek için ayarlanır. Books.xsd ekleneceği XMLSchemaCache nesne karşı XML doğrulanacak olan şema belgesi belirtmek için SAX Okuyucu nesnesi şemaları özelliğine atanır.
back to the top

Visual Basic uygulamasını çalıştırın

  1. Kaydedin ve Visual Basic projesinin çalıştırın.
  2. Ayrıştırmak ve MSXML 4.0 SAXXMLReader nesnesini kullanarak Books.xml doğrulamak için cmdValidate komut düğmesini tıklatın. Doğrulama hataları aşağıdaki Visual Basic komut penceresi içinde listelenmiştir:
    Hata doğrulama hatası: (-2147467259) öğe: 'fiyat' kendi veri türüne göre geçersiz bir değere sahip.
    satırında sütun 44, 8

    Hata doğrulama hatası: DTD/Schema'ya göre öğe içeriği (-2147467259).
    Bekleniyor: açıklama.
    satırında sütun 10 10
    Fiyat öğe veri türü XSD Şemasındaki bir kayan noktalı sayı olarak tanımlanır. Kayan nokta değeri Books.xml Fiyat öğesinde veri içermiyor. XSD şema ayrıca book öðesi publish_date alt öğesi izlesin gerekli Açıklama alt öğesi içermesi gerektiğini belirtir. Kitap Books.xml de Açıklama alt öğesi içermiyor. Bu hatalar tanımlanır ve Visual Basic komut penceresi içinde listelenen.
back to the top

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 309535 - Son İnceleme: 05/07/2016 21:49:00 - Düzeltme: 2.0

  • kbhowto kbhowtomaster kbmt KB309535 KbMttr
Geri bildirim