Buat fail XML. Skema XML (skema XML) - perihalan struktur dokumen XML 440 n contoh fail xml

Format XML direka untuk menyimpan data yang mungkin berguna dalam pengendalian program, tapak web dan sokongan tertentu untuk bahasa penanda tertentu. Tidak sukar untuk mencipta dan membuka fail dengan format ini. Ini boleh dilakukan walaupun anda tidak mempunyai sebarang perisian khusus yang dipasang pada komputer anda.

XML sendiri ialah bahasa markup, agak serupa dengan HTML, yang digunakan pada halaman web. Tetapi jika yang terakhir digunakan hanya untuk memaparkan maklumat dan penandanya yang betul, maka XML membenarkannya untuk distrukturkan dengan cara tertentu, yang menjadikan bahasa ini agak serupa dengan analog pangkalan data yang tidak memerlukan DBMS.

Anda boleh mencipta fail XML menggunakan program khusus atau penyunting teks terbina dalam Windows. Kemudahan menulis kod dan tahap kefungsiannya bergantung pada jenis perisian yang digunakan.

Kaedah 1: Visual Studio

Daripada editor kod Microsoft ini, anda boleh menggunakan mana-mana analognya daripada pembangun lain. Malah, Visual Studio ialah versi yang lebih maju daripada yang biasa "Notepad". Kod itu kini mempunyai penyerlahan khas, ralat diserlahkan atau diperbetulkan secara automatik dan templat khas telah dimuatkan ke dalam program yang memudahkan untuk mencipta fail XML yang besar.

Untuk bermula, anda perlu mencipta fail. Klik pada item "Fail" di panel atas dan daripada menu lungsur pilih "Buat…". Senarai akan dibuka menunjukkan item "Fail".

  • Anda akan dialihkan ke tetingkap dengan pilihan sambungan fail, pilih item dengan sewajarnya "Fail XML".
  • Fail yang baru dibuat akan mempunyai baris pertama dengan pengekodan dan versi. Secara lalai, versi pertama dan pengekodan ditentukan UTF-8, yang boleh anda ubah pada bila-bila masa. Seterusnya, untuk mencipta fail XML sepenuhnya, anda perlu menulis semua yang terdapat dalam arahan sebelumnya.

    Apabila selesai, pilih sekali lagi di panel atas "Fail", dan terdapat item daripada menu lungsur "Simpan segalanya".

    Kaedah 2: Microsoft Excel

    Anda boleh membuat fail XML tanpa menulis kod, contohnya, menggunakan versi moden Microsoft Excel, yang membolehkan anda menyimpan jadual dengan sambungan ini. Walau bagaimanapun, anda perlu memahami bahawa dalam kes ini tidak mungkin untuk mencipta sesuatu yang lebih berfungsi daripada jadual biasa.

    Kaedah ini lebih sesuai untuk mereka yang tidak mahu atau tidak tahu bagaimana untuk bekerja dengan kod. Walau bagaimanapun, dalam kes ini, pengguna mungkin menghadapi masalah tertentu semasa menulis semula fail dalam format XML. Malangnya, operasi menukar jadual biasa kepada XML hanya boleh dilakukan pada versi terbaharu MS Excel. Untuk melakukan ini, gunakan arahan langkah demi langkah berikut:


    Kaedah 3: Notepad

    Malah yang biasa agak sesuai untuk bekerja dengan XML "Buku nota", walau bagaimanapun, ia akan menjadi sukar bagi pengguna yang tidak biasa dengan sintaks bahasa, kerana pelbagai arahan dan teg perlu ditulis di dalamnya. Prosesnya akan menjadi lebih mudah dan lebih produktif dalam program khusus untuk menyunting kod, contohnya, dalam Microsoft Visual Studio. Mereka mempunyai penyerlahan teg khas dan petua alat, yang sangat memudahkan kerja seseorang yang baru mengenali sintaks bahasa ini.

    Kaedah ini tidak memerlukan memuat turun apa-apa, kerana ia telah dibina ke dalam sistem pengendalian. "Buku nota". Mari cuba buat jadual XML mudah di dalamnya menggunakan arahan ini:


    Hasil selesai anda sepatutnya kelihatan seperti ini:




    25
    betul


    Penyusun XML mesti memproses kod ini sebagai jadual dengan satu lajur yang mengandungi data tentang Ivan Ivanov tertentu.

    DALAM "Notepad" adalah agak mungkin untuk membuat jadual mudah seperti ini, tetapi apabila membuat set data yang lebih besar, kesukaran mungkin timbul, kerana dalam kebiasaan "Notepad" Tiada fungsi untuk membetulkan ralat dalam kod atau menyerlahkannya.

    Seperti yang anda lihat, tiada apa yang rumit dalam mencipta fail XML. Jika dikehendaki, ia boleh dibuat oleh mana-mana pengguna yang lebih atau kurang tahu cara bekerja pada komputer. Walau bagaimanapun, untuk mencipta fail XML sepenuhnya, adalah disyorkan untuk mengkaji bahasa penanda ini, sekurang-kurangnya pada tahap primitif.

    Dalam artikel sebelumnya tentang XML, kami melihat kaedah yang sudah lapuk untuk mengesahkan dokumen XML sebagai XML DTD. Kaedah ini masih digunakan untuk mengesahkan data XML, tetapi setiap hari ia semakin digantikan oleh teknologi baharu yang dipanggil Skema XML. Banyak kelemahan yang terdapat dalam XML DTD telah diperbetulkan dalam skema XML, jadi pada masa ini semua pembangun terkemuka hanya menggunakan skema XML untuk pengesahan dokumen.

    Untuk menghargai kelebihan Skema XML berbanding DTD, mari kita lihat dengan lebih dekat kelemahan utama DTD yang telah berjaya diperbetulkan dalam Skema XML. Saya telah menyebutnya dalam artikel "", tetapi untuk pemahaman yang lebih baik, mari ulangi.

    Kelemahan XML DTD berbanding Skema XML

    1. Sintaks bahasa berbeza daripada XML. Iaitu, DTD bukan XML. Dalam hal ini, pelbagai masalah mungkin timbul dengan pengekodan dan pengesahan dokumen XML.
    2. Tiada pemeriksaan jenis data. Terdapat hanya satu jenis data dalam rentetan XML DTD. Dalam hal ini, sebagai contoh, jika terdapat teks dalam medan angka, dokumen itu masih akan lulus pengesahan, kerana XML DTD tidak boleh menyemak jenis data.
    3. Anda tidak boleh menetapkan lebih daripada satu penerangan DTD kepada satu dokumen XML. Iaitu, dokumen boleh disahkan dengan hanya satu penerangan DTD. Jika terdapat beberapa daripada mereka, anda perlu membuat semula penerangan dan menggabungkan segala-galanya dalam satu fail, yang sangat menyusahkan.

    Ini adalah kelemahan utama XML DTD, yang berjaya diperbetulkan dalam piawaian industri untuk menerangkan dokumen XML, Skema XML.

    Skema XML ialah piawaian industri untuk menerangkan dokumen XML

    Ringkasnya, Skema XML melakukan perkara berikut:

    1. Menerangkan nama unsur dan sifat (kamus).
    2. Menghuraikan hubungan antara elemen dan atribut, serta strukturnya (model kandungan).
    3. Menerangkan jenis data.

    Saya juga ingin ambil perhatian bahawa pada masa ini hampir semuanya boleh diterangkan menggunakan gambar rajah. Iaitu, skema ialah cara universal untuk menerangkan tatabahasa data, yang boleh digunakan bukan sahaja untuk mengesahkan dokumen XML, tetapi juga untuk menerangkan pangkalan data, dsb. Oleh itu, skop penggunaan skim tersebut pada masa ini sangat luas.

    Contoh Skema XML untuk mengesahkan dokumen XML

    Seperti yang ditunjukkan oleh amalan, bahan itu diserap dengan lebih baik jika anda segera mula belajar dengan contoh. Saya akan katakan dengan segera bahawa kami tidak akan membincangkan semua butiran, kerana bahan itu sangat kompleks, terutamanya jika anda mengkajinya dalam bentuk teks.

    Contoh skema XML mudah

    Menggunakan skema ini, anda boleh mengesahkan dokumen XML berikut.

    <книга xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "book.xsd"> <название>Asas XML <цена>300

    Jadi mari kita kembali kepada skema XML kami. Seperti yang telah anda perhatikan, XML, yang telah diketahui oleh kami, digunakan untuk mencipta skema XML. Satu-satunya perbezaan di sini ialah Skema XML mempunyai elemen yang telah ditentukan, tidak seperti XML biasa. Dalam hal ini, ruang nama digunakan. Dalam kes ini, ruang nama yang diperlukan ialah "http://www.w3.org/2001/XMLSchema", yang akan ditentukan menggunakan awalan "xs".

    Saya ingin ambil perhatian segera bahawa anda boleh menggunakan kedua-dua awalan ruang nama dan menetapkan ruang nama untuk elemen akar. Tidak ada perbezaan seperti itu. Setiap orang memutuskan sendiri apa yang perlu dilakukan dalam situasi tertentu. Biar saya katakan bahawa awalan "xs" atau "xsd" biasanya digunakan.

    Nah, sekarang mari kita fikirkan bagaimana untuk menguraikan rajah di atas. Seperti yang dinyatakan di atas, Skema XML ialah perihalan perbendaharaan kata dan jenis data. Berdasarkan ini, kami akan menguraikan setiap elemen.

    • — mengisytiharkan elemen "buku" dengan jenis "Buku".
    • — mengisytiharkan jenis kompleks dengan nama "Buku" (xs: complexType - boleh mengandungi elemen bersarang).
    • - pengisytiharan bersarang. Iaitu, jenis akan mengandungi elemen bersarang.
    • — mengisytiharkan elemen dengan nama "tajuk" (jenis standard "rentetan" - xs:string).
    • — mengisytiharkan elemen dengan nama "harga" (jenis standard "nombor" - xs:perpuluhan).

    Seperti yang anda lihat, tidak ada yang sangat rumit di sini. Jika anda fikirkan, semuanya sangat mudah.

    Elemen Skema XML Asas

    Secara ringkas, skema XML boleh diterangkan seperti berikut.

    Skim anda

    Seperti yang anda lihat daripada contoh, setiap skema XML terdiri daripada "skema" elemen akar dan ruang nama yang diperlukan "http://www.w3.org/2001/XMLSchema". Seterusnya datang penerangan tentang litar dan litar itu sendiri. Pada masa yang sama, selalunya dalam skema yang sangat berkualiti tinggi penerangannya jauh lebih besar daripada Skema XML itu sendiri.

    Perihalan elemen dalam Skema XML

    Pada permulaan artikel, kami telah melihat contoh skema XML mudah. Di dalamnya kami menerangkan secara berasingan unsur dan jenis. Pada masa yang sama, saya ingin segera ambil perhatian bahawa urutan tidak memainkan peranan di sini. Skim ini akan berfungsi dalam apa jua keadaan.

    Sekarang mari kita lihat cara kedua menulis Skema XML, yang berdasarkan menerangkan jenis serta-merta di dalam elemen. Kaedah ini sesuai jika anda tidak bercadang untuk menggunakan penerangan yang sama untuk elemen yang berbeza. Untuk kejelasan, mari kita lihat contoh.

    Seperti yang dapat dilihat daripada contoh, elemen diisytiharkan menggunakan "elemen" pembinaan khas menggunakan awalan yang sesuai. Dalam kes ini, kami mentakrifkan elemen yang dipanggil "root" tanpa menyatakan jenis, kerana ia akan diterangkan di dalam elemen. Iaitu, terdapat dua cara untuk menggambarkan elemen.

    1 cara

    Jenis penerangan

    Kaedah 2

    Penerangan jenis unsur

    Anda boleh menggunakan kedua-dua kaedah pertama dan kedua. Mereka semua bekerja dengan cara yang sama. Satu-satunya soalan ialah kemudahan dalam kes ini.

    Selanjutnya, selepas mengisytiharkan elemen, kami menunjukkan bahawa ia adalah jenis kompleks ( ) dan senaraikan ( ) elemen bersarang. Dalam kes ini, ini ialah nama dan elemen umur dengan jenis "xs:string" dan "xs:integer". Awalan xs bermaksud bahawa ia adalah jenis asas yang telah ditakrifkan dalam piawaian Skema XML.

    Seperti yang anda lihat, semuanya agak mudah setakat ini. Sekali lagi, kami tidak akan membincangkan semua butiran, kerana artikel ini bertujuan untuk membiasakan anda dengan Skema XML, dan bukan untuk mengkajinya secara terperinci.

    Cara Skema dan dokumen XML dipadankan

    Keistimewaan Skema XML ialah ia tidak menerangkan dokumen itu sendiri, tetapi ruang nama. Dalam hal ini, selalunya tiada sebutan mengenainya dalam dokumen. Pengendali sendiri memetakan skema yang anda perlukan tanpa menggunakan sebarang arahan dalam dokumen XML.

    Sekiranya pengendali tidak tahu di mana skema itu, kami boleh menunjukkan tempat untuk mencarinya. Ini dilakukan menggunakan atribut khas "schemaLocation". Memandangkan atribut ini tergolong dalam ruang nama yang berbeza, ruang nama juga mesti dinyatakan sebelum menggunakan atribut. Untuk kejelasan, mari kita lihat contoh.

    Skema XML

    dokumen XML

    Sekarang mari kita lihat setiap baris secara terperinci.

    • targetNamespace=”http://www.site.com” – nyatakan ruang nama untuk Skim XML ini.
    • xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” – kami menyambungkan ruang nama di mana atribut “schemaLocation” diterangkan.
    • xsi:schemaLocation=”http://www.site.com/product.xsd” – kami menunjukkan di mana skema boleh ditemui sekiranya penghurai tidak tahu di mana ia berada. Jika dokumen XML tidak tergolong dalam mana-mana ruang nama, dan oleh itu tiada rujukan kepadanya dalam skema, maka atribut "schemaLocation" digantikan dengan "noNamespaceSchemaLocation" (rujukan kepada skema tanpa menentukan ruang nama).

    Itu sahaja. Semoga berjaya dan berjaya dalam mempelajari XML!

    1. Pengenalan

    Jika mana-mana daripada anda pernah cuba mempelajari XML sendiri, anda mungkin pernah menemui banyak konsep mengelirukan yang sama yang saya temui pada masa lalu. DTD, Skema XML, ruang nama, XPath, XPointers, XSL, XSLT, DOM, SAX, SOAP, saya menyerah. Saya hanya akan menambah bahawa kebanyakan bahan ini adalah berdasarkan pelaksanaan, kod yang mungkin mengandungi ralat. Mungkin terdapat berjuta-juta cara untuk melaksanakan dan menggunakan XML, tetapi semuanya boleh menjadi agak rumit. Dan anda tahu, XML boleh menjadi sangat mudah. Jika kita terlupa tentang DTD, Skema XML, ruang nama, dsb.
    Dalam usaha untuk cepat mengajar anda cara bekerja dengan XML, saya akan, jika boleh, mengabaikan sejumlah maklumat yang boleh anda baca dalam literatur yang berkaitan. Dan perkara pertama yang saya akan abaikan ialah ruang nama dan skema. Ini mungkin kelihatan pelik kepada anda, kerana kebanyakan buku bermula dengan menerangkan konsep ini, tetapi cuba fikirkan XML sebagai cara untuk menyelesaikan masalah tertentu, seperti tukul. Adakah anda benar-benar perlu tahu cara membina rumah menggunakan tukul? Bagaimana jika saya hanya perlu menukul paku untuk menggantung gambar? Ia sama dengan XML, ia boleh menjadi sangat kompleks, cukup generik untuk digunakan dalam ratusan jika tidak beribu-ribu aplikasi, dan sangat mudah jika anda tidak memberi perhatian kepada beberapa perkara. Dalam artikel ini, saya akan menumpukan pada menyelesaikan masalah tertentu menggunakan XML.
    Jadi apa sebenarnya masalahnya? Mari kita anggap bahawa saya ingin menerangkan objek mudah, seperti kaca, menggunakan XML. Mengapa saya akan menggunakan XML untuk ini? Baiklah, pertama sekali, untuk itulah XML direka bentuk. XML menerangkan data. Dalam contoh saya, kaca adalah data. Dalam kehidupan sebenar, data boleh berupa dokumen Word, hamparan, imej, buku, rekod pangkalan data, atau bahkan kelas C++ atau Visual Basic. Kedua, XML boleh diperluaskan. XML membolehkan saya mencipta seberapa banyak ciri yang diperlukan untuk menerangkan data, dan ciri ini akan menjadi apa sahaja yang saya mahu. Dan akhirnya, kerana XML dengan cepat menjadi standard. Jika terdapat kehidupan di Marikh, maka anda boleh yakin bahawa mereka akan dapat memahami fail XML saya di sana.

    Apakah sifat asas yang membolehkan kita menggambarkan gelas?

    Apakah rupa perkara yang sama dalam format XML?

    kaca 6 16 ketulan ais straw air ya

    Perhatikan bahawa baris pertama fail () mempunyai penampilan istimewa buat masa ini, cuma ingat bahawa ia sepatutnya berada di sini. Keindahan format XML ialah sesiapa sahaja boleh memahami apa yang dikatakannya hanya dengan melihatnya dengan teliti. Ia juga jelas bahawa ini bukan satu-satunya penerangan XML yang mungkin bagi kaca. Jika saya meminta 10 orang untuk membangunkan huraian XML bagi kaca dengan sifat yang sama, mereka mungkin semua akan mencipta huraian yang berbeza tetapi betul. Di sinilah letak masalahnya. Mungkin bukan untuk kita manusia, tetapi apabila komputer membaca fail XML, adalah idea yang bagus untuk memberitahunya tentang fail tersebut. Di sinilah ruang nama dan skema dimainkan. Ringkasnya, skema digunakan untuk menentukan struktur yang mencukupi untuk fail XML.
    Kini tiba masanya untuk bercakap tentang beberapa peraturan XML mudah yang perlu anda ikuti:

    Peraturan XML #1: Fail XML yang sah mesti sepadan dengan skemanya. Tetapi untuk memudahkan pemahaman bahan, tiada satu pun contoh saya akan menggunakan gambar rajah. Jadi, secara tegasnya, tiada satu pun contoh saya adalah "mencukupi". Tetapi secara jujur, saya tidak kisah. Saya tidak akan membina rumah, saya hanya perlu menggantung gambar. Saya akan bercakap lebih lanjut mengenai perkara ini kemudian apabila kita membincangkan Model Objek Dokumen XML.

    Peraturan XML #2 Nota: Jika anda memprogram dalam VB, ingat: XML adalah sensitif huruf besar. XML adalah sensitif huruf besar-besaran. XML adalah sensitif huruf besar-besaran. XML adalah sensitif huruf besar-besaran. Tulis ayat ini 1000 kali dan anda tidak akan lupa.

    Peraturan XML #3: Teg biasanya dipanggil elemen dan setiap teg pembukaan mesti mempunyai teg penutup yang sepadan. Mengikuti peraturan ini, anda akan mendapat fail XML yang betul. Ini sangat penting kerana sehingga fail XML diformat dengan betul, ia tidak akan dihuraikan dan dimuatkan ke dalam Model Objek Dokumen. Ambil perhatian bahawa jika elemen tidak mengandungi nilai dan tidak mengandungi elemen lain (bersarang), tag penutup mungkin kelihatan seperti bukannya reka bentuk yang lebih besar . Anda boleh melihat pendekatan ini dalam contoh sebelumnya ( ).

    Peraturan XML #4: Elemen boleh mengandungi atribut, dan nilai atribut mesti disertakan dalam tanda petikan (tunggal atau dua).

    Peraturan XML #5: Anda boleh menggunakan nama atribut beberapa kali, tetapi nama elemen mestilah unik di seluruh fail. Dalam contoh sebelumnya, atribut qty mempunyai makna yang berbeza bergantung pada elemen mana ia digunakan ,, atau . Makna sesuatu atribut bergantung kepada konteks penggunaannya. Manakala nilai elemen sentiasa bermaksud perkara yang sama, tidak kira di mana dalam fail terletak atribut itu. Dalam contoh sebelumnya, elemen Dan sentiasa mempunyai maksud yang sama di seluruh dokumen kami. contohnya, selalu digunakan untuk menerangkan ketinggian gelas.

    Peraturan XML #6: Terdapat beberapa aksara khas dalam XML yang tidak boleh digunakan secara langsung kerana ia dikhaskan dalam sintaks XML. Oleh itu, untuk menggunakan aksara sedemikian, anda perlu menggunakan binaan terpelihara bermula dengan & aksara dan kod khas, (karakter & mesti ditulis sebagai &) (" aksara mesti ditulis sebagai ") (karakter< должен писаться как <) (символ >mesti ditulis sebagai >) dan (" simbol mesti ditulis sebagai "). Sebaliknya, anda juga boleh menggunakan arahan, di mana "...." boleh menjadi sebarang jujukan aksara kecuali "]]>". Pembinaan ini boleh muncul di mana-mana, tetapi ia tidak boleh bersarang.

    2. Model Objek Dokumen XML

    Model Objek Dokumen XML membolehkan pengaturcara memuatkan kandungan fail XML ke dalam ingatan. Setelah fail XML dimuatkan dengan cara ini, ia boleh dimanipulasi menggunakan sifat, kaedah dan peristiwa Model Objek Dokumen. Di sinilah XML berguna. Model Objek Dokumen sangat memudahkan pengambilan dan pemprosesan maklumat fail XML. Saya tidak akan bercakap di sini tentang semua keupayaan model objek dokumen; Saya hanya akan bercakap tentang beberapa ciri utama yang akan membantu mencapai matlamat artikel ini. Saya akan mengambil fail XML yang baru saya buat untuk menerangkan kaca, memuatkannya ke dalam Model Objek Dokumen dan melakukan beberapa perkara dengannya. Saya akan menyimpan baki ciri dan keupayaan model objek dokumen untuk artikel seterusnya, yang bercakap tentang XML pelanggan. Ambil perhatian bahawa walaupun model objek dokumen sangat baik dan mudah untuk pembangun, ia memerlukan jumlah sumber sistem yang agak besar. Oleh itu, terdapat kaedah lain untuk menghuraikan fail XML, yang dikenali sebagai SAX. Artikel saya tidak mendakwa sebagai sumber maklumat yang lengkap tentang isu ini, jadi adalah berguna untuk menggunakan XML SDK juga.

    Mari lihat contoh menggunakan penghurai XML Microsoft versi 3.0 (msxml3.dll) untuk memahami cara semuanya berfungsi. Jika anda tidak mempunyai penganalisis, versi terkini boleh dimuat turun dari tapak web Microsoft.
    Katakan saya menyimpan contoh penerangan cawan dalam format XML dalam fail "http://web_server/xml/cup.xml" (laluan tempatan C:\inetpub\wwwroot\xml\cup.xml) dan sekarang saya mahu muatkannya ke dalam model objek dokumen. Kod berikut menganggap bahawa penganalisis telah dimuatkan dan berjalan.

    Kod Visual Basic 6.0:(wujudkan sambungan dengan Microsoft XML, v3.0) Malapkan xmlDoc sebagai MSXML2.DOMDocument30 Set xmlDoc = Baharu DOMDocument30 xmlDoc.async = False xmlDoc.validateOnParse = False xmlDoc.load ("c:\inetpub\wwwroot\xml\cup.x ) msgBox xmlDoc.xml Kod Sisi Pelayan ASP dalam Visual Basic: Set xmlDoc malap xmlDoc = Server.CreateObject("Msxml2.DOMDocument.3.0") xmlDoc.async = False xmlDoc.validateOnParse = False xmlDoc.load "/xml/cup.xml" Kod Sisi Pelayan ASP dalam Skrip Java: var xmlDoc = Server.CreateObject("Msxml2.DOMDocument.3.0"); xmlDoc.async = palsu; xmlDoc.validateOnParse = palsu; xmlDoc.load("/xml/cup.xml");

    Penjelasan kod di atas - mari kita lihat kod VB6

    Baris 1: Malapkan xmlDoc sebagai MSXML2.DOMDocument30

    Dalam baris pertama ini kami mentakrifkan rujukan kepada "Microsoft XML, v3.0". Dalam baris ini saya mentakrifkan pembolehubah xmlDoc sebagai rujukan kepada dokumen XML. MSXML2 ialah perpustakaan (gunakan nama itu, jangan cuba tulis MSXML3, ia tidak akan berfungsi). DOMDocument30 mentakrifkan objek dokumen XML yang sepadan dengan versi 3.0. Anda juga boleh melihat kod ini: malapkan xmlDoc sebagai MSXML2.DOMDocument. Pembinaan ini biasanya digunakan apabila anda tidak mahu menentukan versi khusus dokumen XML. Dalam kes ini, penganalisis lalai yang didaftarkan dalam sistem akan digunakan. Satu-satunya masalah mungkin ialah versi penganalisis yang didaftarkan secara lalai mungkin berbeza pada komputer yang berbeza. Jika anda ingin memastikan bahawa kod yang anda tulis akan berfungsi dengan mana-mana versi penganalisis, maka jangan gunakan binaan yang khusus untuk versi penganalisis tertentu. Kerana tiada jaminan bahawa pengguna yang akan menggunakan kod anda akan memasang versi penganalisis yang sama yang anda tulis kod anda. Satu lagi kelebihan membangunkan kod yang versi bebas daripada penganalisis ialah apabila versi penganalisis yang lebih baharu dikeluarkan, ia akan serasi ke belakang dengan versi sebelumnya dan anda tidak perlu menyusun semula kod anda.

    Baris 2: Tetapkan xmlDoc = DOMDocument30 baharu

    Baris ini memulakan pembolehubah xmlDoc sebagai contoh baharu bagi objek dokumen XML versi 3.0.

    Baris 3: xmlDoc.async = Salah

    Fail XML boleh dimuatkan sama ada secara serentak atau tidak segerak. Jika xmlDoc.async = False, ini bermakna kandungan fail XML akan dimuatkan dan hanya selepas kawalan itu akan dipindahkan ke proses panggilan. Jika xmlDoc.async = Benar, ini bermakna kawalan akan dipindahkan ke proses panggilan serta-merta, tanpa menunggu sehingga kandungan fail XML dimuatkan sepenuhnya.

    Baris 4: xmlDoc.validateOnParse = Salah

    Kod ini menunjukkan bahawa penghurai tidak seharusnya mengesahkan fail XML yang dimuatkan terhadap skemanya (validateOnParse = False). Untuk mendayakan semakan pematuhan skema, anda perlu menulis validateOnParse = True.

    Baris 5: xmlDoc.load("C:\inetpub\wwwroot\xml\cup.xml")

    Baris ini memanggil kaedah untuk memuatkan fail XML yang ditentukan. Terdapat dua jenis kaedah pemuatan. Yang pertama, yang ditulis pada baris 5, memuatkan fail ke dalam model objek dokumen, dan ia perlu untuk lulus laluan penuh ke fail XML. Pilihan pemuatan kedua melibatkan menghantar rentetan xml sebagai parameter. Jenis pemuatan ini boleh dipanggil, contohnya, seperti ini: xmlDoc.loadXML("rentetan xml yang sah"). Saya akan menunjukkan kepada anda cara menggunakan kaedah ini kemudian.

    Baris 6: MsgBox xmlDoc.xml

    Baris ini memaparkan kandungan fail XML yang dimuat turun. Akibatnya, kami harus menerima fail XML asal yang kami buat sebelum ini.

    2.2. Meneroka Model Objek Dokumen XML

    Cipta projek baharu dalam Visual Basic dan namakannya standard.exe. Tampalkan kod di atas ke dalam kaedah pemuatan tetingkap utama projek anda. Pastikan anda mengisytiharkan rujukan kepada "Microsoft XML v3.0". Untuk melakukan ini, klik Projek-->Rujukan, kemudian tatal ke bawah senarai yang muncul dan cari pautan yang dikehendaki di dalamnya. Sila ambil perhatian bahawa penganalisis versi 3.0 mesti dipasang pada komputer anda, jika tidak, ia tidak akan disenaraikan. Tetapkan titik putus pada baris terakhir kod (msgbox xmlDoc.xml). Jalankan aplikasi dalam mod nyahpepijat. Apabila proses pelaksanaan mencapai titik perhentian, panggil tetingkap "Orang Tempatan" dan lihat model objek dokumen. Anda boleh belajar banyak dengan melihat apa yang dipaparkan dalam tetingkap ini. Tetingkap "Penduduk tempatan" sepatutnya kelihatan serupa dengan imej di bawah. Berikut ialah beberapa sifat menarik Model Objek Dokumen.

    Model objek dokumen XML sentiasa mengandungi dua nod peringkat teratas:

    • Item1 ialah punca cawangan elemen dokumen (abaikan)
    • Item2 sebenarnya adalah elemen pertama dokumen (ingat ini)

    nodeName atau baseName - boleh digunakan semasa mencari nama elemen atau atribut.
    nodeType - gunakan untuk mendapatkan jenis nod semasa.
    nodeValue - digunakan untuk mengetahui nilai data nod.
    childNodes ialah koleksi nod kanak-kanak. Ia boleh menjadi nod elemen, nod teks dan nod CDATA. Mungkin terdapat jenis nod lain, yang tidak akan saya bincangkan sekarang, tetapi anda boleh mempelajari semua tentangnya dalam XML SDK.
    atribut ialah koleksi nod atribut untuk elemen semasa.
    panjang - digunakan untuk menentukan bilangan nod dalam pokok yang dimiliki secara langsung oleh yang semasa.
    xml - sifat ini hadir dalam semua nod dan boleh digunakan untuk mewakili kedudukan semasa dalam dokumen. Rentetan XML bermula pada nod semasa dan turun ke hujung pokok. Ini adalah ciri yang sangat berguna. Eksperimen dengannya dan lihat apa yang berlaku.

    2.2.2. Nod elemen

    Nod elemen boleh mengandungi nod anak unsur, atribut, teks atau CDATA. Daripada rajah di bawah, anda boleh melihat maklumat berikut tentang nod "PEJAL":

    nodeType - Jenis nod semasa = NODE_ELEMENT - i.e. nod semasa ialah elemen.
    nodeName atau baseName atau tagName - Nama nod semasa (elemen) = SOLID.
    Unsur induknya KANDUNGAN mempunyai 4 orang anak.
    Ini boleh dilihat dalam rajah berikut, tetapi SOLID mempunyai satu anak yang merupakan jenis data teks.
    teks - "kiub ais" ialah kaedah pintasan yang membolehkan anda mendapatkan nilai nod semasa tanpa beralih ke nod teks kanak-kanak.

    2.2.3. Nod Atribut

    Nod atribut hanya boleh terdiri daripada teks atau nod anak CDATA. Rajah berikut menunjukkan maklumat yang boleh diperolehi tentang nod "qty":

    nodeType - Jenis nod semasa = NODE_ATTRIBUTE - nod semasa ialah atribut.
    nodeName atau baseName - Nama nod semasa (Atribut) = qty

    Daripada rajah berikut juga jelas bahawa qty mempunyai seorang anak, yang mempunyai jenis data teks.
    teks atau nilai - "2" ialah kaedah pintasan yang membolehkan anda mendapatkan nilai nod semasa tanpa beralih ke nod teks anak.

    2.2.4. Teks dan nod CDATA

    Teks atau nod CDATA tidak mempunyai anak. Nod teks mengandungi data teks yang diproses nod induknya. CDATA mengandungi data teks mentah nod induknya. Nod CDATA dicipta apabila data dalam fail XML dibingkai dengan cara yang istimewa. Label CDATA memberitahu penghurai untuk tidak menghuraikan data dan menerima aksara di dalam label sebagai data. Bahagian CDATA amat berguna apabila anda perlu memasukkan kod di dalam fail XML. Rajah berikut menunjukkan maklumat yang boleh diperoleh daripada nod teks semasa:

    nodeType - Jenis nod semasa = NODE_TEXT - nod semasa mengandungi data teks.
    nodeName - Nama nod semasa (teks) = #text - semua nod teks dipanggil #text
    data atau teks atau nilai - "2" ialah data nod semasa.

    2.2.5. Ralat semasa memuatkan dokumen

    Bahagian parseError model objek dokumen boleh berguna dalam mengenal pasti masalah yang timbul semasa memuatkan dokumen XML. Jika saya mengalih keluar teg penutup daripada LAIN dalam fail contoh kami dan cuba menjalankan program sekali lagi, saya akan mendapat hasil berikut. Sekeping maklumat berguna yang pertama ialah NextSibling kami kini mengandungi nilai Nothing. Sekarang, jika anda melihat childNodes, anda boleh melihat bahawa medan panjang kini ialah 0. Kedua-dua tanda ini menunjukkan bahawa dokumen XML kami tidak dimuatkan. Untuk mengetahui sebabnya, saya membuka nod parseError dan mendapatkan semua maklumat ralat.

    Jadi saya telah menunjukkan kepada anda cara memuatkan fail XML ke dalam Model Objek Dokumen, tetapi apa yang anda lakukan dengannya di sana? Salah satu ciri utama yang boleh anda gunakan ialah melakukan pelbagai pertanyaan pada dokumen XML. Untuk melakukan ini, anda sudah tentu boleh melihat keseluruhan dokumen sehingga anda menemui maklumat yang anda cari. Tetapi cara yang paling disukai ialah menggunakan salah satu daripada dua kaedah kelas DOMDocument. Kedua-dua kaedah yang digunakan untuk mencari nod dalam contoh kami sebelum ini boleh kelihatan seperti xmlDoc.SelectSingleNode(patternString) untuk mendapatkan nod yang kami cari, atau xmlDoc.SelectNodes(patternString) untuk mendapatkan senarai nod yang kami cari. Parameter patternString adalah tepat permintaan. Ia boleh dibentuk dalam salah satu daripada dua cara. Sama ada sebagai permintaan XSL atau sebagai permintaan XPath. Cara yang lebih baharu dan pilihan untuk menanyakan dokumen XML ialah XPath. Format patternString mesti ditetapkan terlebih dahulu, sebelum panggilan pertama ke salah satu daripada dua kaedah permintaan data, jika tidak kaedah XSL untuk membentuk permintaan akan digunakan secara lalai. Untuk menetapkan jenis pembentukan patternString, gunakan setProperty("SelectionLanguage", "format"). Untuk menukar pertanyaan dalam contoh kami untuk menggunakan cara XPath, saya akan menambah arahan berikut: setProperty("SelectionLanguage","XPath"). Pada pendapat saya, XPath ialah teknologi XML yang paling penting untuk dipelajari. Saya akan memberi anda beberapa pertanyaan XPath mudah. Tempat yang baik untuk mula mempelajari teknologi ini ialah Microsoft XML SDK. Satu lagi cara untuk menerangkan perkara ini ialah dengan menulis aplikasi Visual Basic mudah yang membolehkan anda memasukkan pertanyaan dan mengeluarkan hasilnya. Anda mungkin menemui beberapa apl percuma yang melakukan perkara yang sama, tetapi XPath agak baharu dan mungkin tidak disokong sepenuhnya oleh apl tersebut.

    2.3.1. Menggunakan XPATH untuk Menyoal Model Objek Dokumen

    Mari tambahkan beberapa kod pada penghujung contoh kami yang terdahulu untuk mengembalikan kandungan buku pesanan kami:

    HEBAT! Sekarang mari tambah pertanyaan lain yang membolehkan kita menentukan sama ada kaca itu mempunyai penutup atau tidak. Tambahkan kod berikut pada penghujung yang sebelumnya:

    Tetapkan objNode = xmlDoc.selectSingleNode("/CUP/LID") jika objNode.text="yes" kemudian MsgBox "Kami mempunyai penutup" jika tidak MsgBox "Tiada penutup pada cawan ini" jika

    Mari kita lihat baris demi baris kod:

    Baris 1: Malapkan objNode Sebagai IXMLDOMNode

    Baris ini mentakrifkan pembolehubah objNode jenis nod dokumen XML. Adalah penting untuk memahami bahawa nod dokumen XML juga merupakan objek. Tidak mengapa. Ia terdiri daripada dirinya sendiri, serta atribut dan anak-anaknya (childNodes). Dengan cara ini anda boleh memotong dahan pokok yang tidak perlu, memilih hanya yang anda perlukan.

    Baris 2: Malapkan objListOfNodes Sebagai IXMLDOMNodeList

    Baris ini mentakrifkan pembolehubah objListOfNodes, yang mempunyai jenis senarai nod dokumen XML (kumpulan nod).

    Baris 3: xmlDoc.setProperty "SelectionLanguage", "XPath"

    Baris ini menetapkan cara patternString dibentuk sebagai XPath.

    Baris 4: MsgBox "Cawan anda mengandungi item berikut:"

    Baris 5: Tetapkan objListOfNodes = xmlDoc.selectNodes("//CONTENTS/*[@qty>0]")

    Baris ini menjalankan pertanyaan XPath yang akan mengembalikan sekumpulan nod dan menyimpannya dalam pembolehubah objListOfNodes. Permintaan dibahagikan kepada bahagian berikut:

    • //CONTENTS - ambil semua elemen CONTENTS dalam dokumen XML. Nota: // ialah singkatan untuk keseluruhan kandungan dokumen XML.
    • /* - daripada senarai elemen KANDUNGAN, ambil semua (* - digunakan untuk menunjukkan semua) elemen keturunan. Ini mengurangkan hasilnya kepada empat nod elemen ( ). Empat nod ini terletak terus di bawah nod CONTENTS.
    • [@qty>0] - semak setiap elemen anak untuk memastikan atribut qty (@ - bermaksud atribut) lebih besar daripada 0. Jika syarat ini tidak dipenuhi, nod akan dibuang. Segala-galanya di dalam permintaan XPath boleh mengambil nilai Benar atau Salah. Jika hasilnya Benar, maka nod disimpan. Jika hasilnya Palsu, maka nod dibuang. Selepas ini, keputusan kami dikurangkan kepada tiga nod (

    Baris 6-8: Untuk Setiap objNode Dalam objListOfNodes / MsgBox objNode.Text / Next

    Baris ini memaparkan nilai setiap nod elemen yang sepadan dengan pertanyaan. ("kiub ais" , "jerami" , "air").

    Baris 9: Tetapkan objNode = xmlDoc.selectSingleNode("/CUP/LID")

    Baris ini mengembalikan semua elemen LID yang tergolong dalam elemen CUP, yang seterusnya diperoleh daripada akar pokok (apabila pertanyaan bermula dengan /, ini bermakna anda perlu bermula dari akar). Ini sangat serupa dengan laluan ke fail atau folder. Dalam contoh kami, pertanyaan ini akan mengembalikan elemen LID yang mengandungi nilai "ya". Perkara penting di sini ialah saya memberitahu permintaan untuk bermula pada elemen akar dokumen XML. Pertanyaan tidak selalu bermula pada elemen akar; ia biasanya bermula pada nod semasa. Dalam contoh kami, ini tidak penting, kerana nod semasa (xmlDoc) ialah elemen akar dokumen XML (tetapi ini tidak benar dalam semua kes).

    Baris 10-15: jika objNode.text="yes" maka / MsgBox "Kami mempunyai tudung" /
    else / MsgBox "Tiada penutup pada cawan ini" /end if

    Baris ini memaparkan mesej "Kami mempunyai penutup" kerana sifat teks LID elemen ialah "ya".

    3. Tukar ADO kepada XML

    Sekarang setelah anda memahami asas XML, mari buat kawalan ActiveX yang akan menukar set data ADO ke dalam format XML. Matlamatnya adalah untuk mendapatkan tajuk buku daripada jadual Tajuk pangkalan data Pub dan mengembalikannya dalam format XML. Saya akan menggunakan hasilnya dalam artikel saya yang seterusnya. Anda boleh katakan ADO mempunyai kaedah tersendiri untuk menyimpan hasil dalam format XML, bukan? Ya, tetapi jika saya mempercayai ADO untuk melakukan ini, saya akan mendapat fail XML dalam format yang mengerikan yang mustahil untuk digunakan. ADO akan mencipta fail XML menggunakan ruang nama, dan saya tidak memerlukannya sama sekali sekarang. Kedua, ADO akan mencipta fail XML, yang akan diwakili dalam bentuk atribut. Dengan kata lain, setiap rekod akan menjadi elemen dan setiap medan menjadi atribut:

    Tetapi saya ingin menerima fail XML dalam bentuk elemen, di mana setiap entri akan terkandung dalam teg , dan setiap medan akan menjadi elemen di dalam teg . Sintaks rentetan XML saya ialah:

    data daripada jadual data daripada jadual data daripada jadual data daripada jadual data daripada jadual data daripada jadual datadaripada

    By the way, apa yang saya baru lakukan ialah mencipta skema untuk rentetan XML saya. Sekarang, jika saya perlu menyemak struktur dokumen XML terhadap skema, yang perlu saya lakukan ialah menukar skema ke dalam format yang betul. Iaitu, dalam sintaks DTD atau XDR. Perhatikan bahawa saya telah menambah beberapa atribut pada setiap elemen . Satu sebab untuk ini ialah maklumat ini boleh digunakan oleh pelanggan. Prettyname boleh digunakan sebagai label data. Atribut datatype boleh digunakan untuk pengesahan data sisi klien. Tetapi untuk bersikap adil, sebab sebenar atribut ini wujud adalah kerana ia mempunyai tujuan khas dalam templat fail XSL yang sering saya gunakan untuk membina klausa mana pertanyaan SQL. Mungkin saya akan menerbitkan artikel yang menunjukkan pendekatan ini tidak lama lagi. Templat sebenarnya sangat berguna. Apabila struktur XML digunakan pada data daripada jadual Tajuk, hasilnya akan kelihatan seperti ini:

    Panduan Pangkalan Data Eksekutif Sibuk BU1032 Panduan Pangkalan Data Eksekutif Sibuk perniagaan 19.99 4095 Gambaran keseluruhan sistem pangkalan data yang tersedia dengan penekanan pada aplikasi perniagaan biasa. Bergambar. 6/12/1991 Memasak dengan Komputer: Kunci Kira-kira Surreptitious BU1111 Memasak dengan Komputer: Kunci Kira-kira Surreptitious perniagaan 11.95 3876 Petua berguna tentang cara menggunakan sumber elektronik anda untuk kelebihan terbaik. 6/9/1991

    Sekarang saya ada sesuatu untuk diusahakan!

    Penyenaraian 1 - CUP.XML

    kaca 6 16 ketulan ais straw air ya

    Malapkan xmlDoc Sebagai MSXML2.DOMDocument30 Tetapkan xmlDoc = DOMDocument30 Baharu xmlDoc.async = False xmlDoc.validateOnParse = False xmlDoc.Load ("c:\inetpub\wwwroot\xml\cup.xml") MsgBox xmLIXDoc.xNoml Di MsgBox xmLIXDoc.xNomlDoc.xNoml Sebagai IXMLDOMNodeList xmlDoc.setProperty "SelectionLanguage", "XPath" MsgBox "Cawan anda mengandungi item berikut" Tetapkan objListOfNodes = xmlDoc.selectNodes("//CONTENTS/*[@qty>0]") Untuk Setiap objNode Dalam objNodes.NodeBox objNode. Teks Set Seterusnya objNode = xmlDoc.selectSingleNode("/CUP/LID") Jika objNode.Text = "ya" Kemudian MsgBox "Kami mempunyai penutup" Lain MsgBox "Tiada penutup pada cawan ini" Tamat Jika

    Penyenaraian 3 - Kawalan ActiveX: ADO dalam XML (WebClass.dll)(xmlControl.cls)

    Pilihan Eksplisit "Isytiharkan pembolehubah pangkalan data Private m_dbConnection As New ADODB.Connection Private m_dbCommand As ADODB.Command Private m_adors As ADODB.Recordset Private m_adoErrors As ADODB.Error Private m_adoErr As Error Public nCommandTimeOut As Variant Public nCommandTimeOut As Variant Public nConnectionTime String Public strLogPath As String Public strDatabase As String Public strUser As String Public strKata Laluan Sebagai String Public strServer As String Public strVersion Sebagai String Public lMSADO As Boolean "Pembolehubah Global Persendirian Private gnErrNum Private As Variants Private String AsgstrErrDev Swasta gstrADOError Sebagai String Private Const adLeonNoRecordset As Integer = 129 Private gtableName(6) As String Private gcolumnName(6) As String Private gprettyName(6) As String Private gdatatype(6) Sebagai String Private gfilter(6) Sebagai String Private Function OpenDatabase() Jika Len(strConnect) = 0 Kemudian "tetapkan nilai lalai Jika Len(strDatabase) = 0 Kemudian strDatabase = "pubs" Tamat Jika Jika nConnectionTimeOut = 0 Kemudian nConnectionTimeOut = 600 Tamat Jika Jika nCommandTimeOut = 0 Kemudian nCommandTimeOut = 600 Tamat Jika Len (strAppName) = 0 Kemudian strAppName = "xmlControl" Tamat Jika Jika Len(strUser) = 0 Kemudian strUser = "sa" Tamat Jika Jika Len(strPassword) = 0 Kemudian strPassword = "" Tamat Jika strConnect = "Pembekal=SQLOLEDB. 1 ; " & _ "Nama Permohonan=" & strAppName & _ "; Sumber Data=" & strServer & "; Katalog Permulaan="&strDatabase&"; " & _ " ID Pengguna=" & strUser & "; Password=" & strPassword & ";" End If "connect to SQL Server and open the database On Error GoTo SQLErr "Dayakan pengendali ralat Dengan m_dbConnection .ConnectionTimeout = nConnectionTimeOut .CommandTimeout = nCommandTimeOut .Buka strConnect "buka pangkalan data menggunakan rentetan sambungan Tamat Dengan Pada Ralat GoTo 0 "matikan pengendali ralat OpenDatabase = Benar" pangkalan data berjaya dibuka Keluar dari Fungsi SQLErr: Panggilan logerror("OPEN") OpenDatabase = False End Function Private Function BuildSQLwhere(tmpWhere) As String "Ini untuk Akhir masa hadapan Function Public Function GetTitlesXML (Pilihan xmlWhere As Variant) As String Dim whereClause As String Dim strSQL As String Call OpenDatabase "buka pangkalan data pub Jika IsMissing(xmlWhere) Kemudian "apabila pertanyaan gagal whereClause = "" Lain whereClause = BuildSQhereLwhere)"(xmlWhereLwhere) tukar pertanyaan kepada satu sql Tamat Jika "memulakan ungkapan sql yang akan menanyakan tajuk buku strSQL = "pilih title_id,title,type,price,ytd_sales,notes,pubdate from titles " & whereClause Call NewRecordSet "membuat set data " tetapkan m_adoRs lokasi kursor. CursorLocation = adUseClient "buka set rekod m_adoRs.Buka strSQL, m_dbConnection, adOpenForwardOnly, adLockReadOnly, adCmdText "putuskan sambungan daripada set data Set m_adoRs.ActiveConnection = Nothing On Error GoTo 0 " matikan sambungan pangkalan data CloseDatabase Jika m_adoRs. EOF Kemudian GetTitlesXML = "" "pertanyaan tidak mengembalikan sebarang nilai Lain Jika lMSADO Kemudian GetTitlesXML = msado(m_adoRs) "tukar set rekod ado kepada xml tersuai Tamat Jika Tamat Jika "tutup set data Panggil CloseRecordset Keluar Function SQLErr: Call logerror(strSQL) End Function Private Function ADOtoXML(tmprs As ADODB.Recordset, tmpMP As Boolean) As String Dim adoFields As ADODB.Fields "mengisytiharkan koleksi untuk menyimpan medan Dim adoField As ADODB.Field "yang digunakan untuk mendapatkan" setiap medan daripada koleksi Dim xmlDoc As msxml2.DOMDocument30 Dim tmpLine As String "menyimpan perwakilan xml setiap buku Dim tmpXML As String "digunakan untuk menggabungkan rentetan xml Dim i As Integer Jika tmprs.EOF Kemudian "pertanyaan tidak mengembalikan sebarang rekod ADOtoXML = "" Keluar Fungsi Lain Set adoFields = tmprs.Fields "buat koleksi medan Tamat Jika tmpXML = " " "semua buku akan disertakan dalam tag Lakukan Sehingga tmprs.EOF "gelung melalui setiap baris dalam set data i = 0 " I ialah indeks medan ado, yang bermula pada 0 - medan pertama ialah medan(0) tmpLine = " " & tmprs("title") & vbCrLf Untuk Setiap adoField Dalam adoFields "gelung melalui semua medan "bina teg xml dan atributnya untuk medan semasa tmpLine = tmpLine & " " & adoField.Value tmpLine = tmpLine & "" & vbCrLf i = i + 1 "pindah ke medan seterusnya Seterusnya tmpXML = tmpXML & tmpLine & "" & vbCrLf "teg penutup selepas medan terakhir tmprs.MoveNext "pengepala seterusnya Set Gelung adoField = Tiada apa-apa "memusnahkan objek medan Set adoFields = Tiada "memusnahkan objek koleksi medan tmpXML= tmpXML & " teg penutup "&vbCrLf". Tetapkan xmlDoc = Baharu msxml2.DOMDocument30 "buat xmlDOM xmlDoc.async = Palsu "tunggu dokumen untuk memuatkan xmlDoc.validateOnParse = Palsu "jangan semak skema xmlDoc.loadXML(tmpXML) "muat rentetan ke dalam model objek dokumen Semasa Ralat Resume Seterusnya "jika fail tidak wujud, maka kami memproses ralat ini Bunuh("c:\temp\custom.xml") "padam fail jika ia wujud Pada Ralat GoTo 0 "beritahu pengendali ralat untuk mengganggu apabila ralat berlaku xmlDoc.save dikesan ("c:\temp\custom. xml") "simpan xml ke fail ADOtoXML=xmlDoc.xml "mengembalikan rentetan xml Set xmlDoc=Tiada apa-apa "memusnahkan model objek dokumen End Function Private Function msado(tmprs As ADODB.Recordset ) As String Dim xmlDoc As msxml2.DOMDocument30 On Error Resume Seterusnya "jika fail tidak wujud, kita mendapat ralat Bunuh ("c:\temp\msado.xml") "kita padam fail jika ia wujud Pada Ralat GoTo 0 "kami memberitahu pengendali ralat untuk membatalkan apabila ralat dikesan tmprs.save "c:\temp\msado .xml", adPersistXML "simpan xml ke fail Set xmlDoc = msxml2.DOMDocument30 baharu "buat model objek dokumen xml xmlDoc .async = False "tunggu dokumen xml untuk memuatkan xmlDoc.validateOnParse = Palsu "jangan semak skema xmlDoc.Load ("C: \temp\msado.xml") "muat fail ke dalam model objek dokumen msado = xmlDoc .xml "kembalikan rentetan xml Set xmlDoc = Tiada "memusnahkan model objek dokumen End Function Private SubCloseRecordset() "tutup set data m_adoRs.Close Set m_adoRs =Nothing End Sub Private Sub NewRecordSet() Set m_adoRs= Nothing Set m_adoRs=New ADODB.Recordset End Sub Private Sub CloseDatabase() m_dbConnection.Close Set m_dbConnection =Tiada End Sub Private Sub logerror(errSQL As String) Malapkan hFail Sebagai Integer Dim expFile Sebagai Rentetan Pada Ralat PergiTo 0 gnErrNum = Err.Number gstrErrSscription = Set Ralat m_adoErrors = m_dbConnection.Ralat Untuk Setiap m_adoErr Dalam m_adoErrors gstrADOError = m_adoErr.Description & "," & CStr(m_adoErr.NativeError) _ & ", " & CStr(m_adoErr. Sumber _ & "," & CStr(m_adoErr.SQLState) Seterusnya hFile =FreeFile Jika Len(strLogPath) = 0 Kemudian strLogPath = "C:\temp\" End If expFile = strLogPath & strAppName & ".err" Buka expFile Untuk Lampiran Sebagai #hFile Print #hFile,"************************************** ***** **" Cetak #hFile, Now() Print#hFile, "************************************** *** ****" Print #hFile,"Subrutin: " & tmpPro Print #hFile, "Nombor Ralat:" & gnErrNum Print#hFile, "Perihalan Ralat: " & gstrErrDesc Cetak #hFile, "Sumber Ralat:" & gstrErrSrc Print # hFile, "Ado error String: " & gstrADOError Print #hFile, "Bad SQL: " & errSQL Close #hFile End Sub Private Sub Class_Initialize() strVersion = "xmlControl Version 1. 1" "title_id,title,type,price,ytd_sales,notes,pubdate gtableName(0) = "titles" gcolumnName(0) = "title_id" gprettyName(0) = "Title Identification Number" gdatatype(0) = "nombor" gfilter(0) = "" gtableName(1) = "titles" gcolumnName(1) = "title" gprettyName(1) = "Tajuk Buku" gdatatype(1) = "text" gfilter(1) = "" gtableName (2) = "tajuk" gcolumnName(2) = "type" gprettyName(2) = "Jenis Buku" gdatatype(2) = "text" gfilter(2) = "" gtableName(3) = "titles" gcolumnName( 3) = "harga" gprettyName(3) = "Harga Buku" gdatatype(3) = "nombor" gfilter(3) = "" gtableName(4) = "titles" gcolumnName(4) = "ytd_sales" gprettyName( 4) = "Jualan tahun ke tarikh" gdatatype(4) = "nombor" gfilter(4) = "" gtableName(5) = "tajuk" gcolumnName(5) = "nota" gprettyName(5) = "Nota tentang buku " gdatatype(5) = "memo" gfilter(5) = "" gtableName(6) = "titles" gcolumnName(6) = "pubdate" gprettyName(6) = "Tarikh Diterbitkan" gdatatype(6) = "tarikh" gfilter (6) = "" End Sub

    Penyenaraian 4 - Aplikasi ujian VB untuk menguji WebClass

    Sub Perintah Peribadi1_Click() Malapkan objWC Sebagai xmlControl Malapkan xml Sebagai Set Rentetan objWC = xmlControl baharu objWC.strDatabase = "pubs" objWC.strServer = "ltweb" objWC.strUser = "sa" objWC.strPassword = "2MSOAD" .Nilai objWC.strAppName = "Article1" Text1.Teks = objWC.getTitlesXML End Sub

    Penyenaraian 5 - ASP untuk menguji WebClass

    Kadangkala memahami fail XML yang dihantar ke ruang kadaster hanya perlu apabila anda merasakan sesuatu perlu diperbetulkan di suatu tempat, dan ramai orang mempunyai rasa ingin tahu semula jadi. Tapi... Penting. Ingat bahawa selepas menandatangani fail tandatangan digital, anda tidak boleh mengedit fail XML! Sebagai contoh dari amalan, apabila membahagikan plot kepada 300 unit memori, seorang gadis secara tidak sengaja memadamkan hanya satu baris dalam alamat salah satu plot. Dan itu sahaja... Fail XML tidak lulus pengesahan. Mencari semua entri dalam program itu kelihatan membosankan bagi saya, terutamanya kerana saya tahu apa yang perlu dicari. Setelah membuka fail XLM dalam editor ujian dengan mencari, saya menemui baris yang diperlukan dan membuat perubahan. Tetapi sekali lagi, saya ulangi - jika anda mengedit fail, maka anda perlu menandatangani semula dengan tandatangan digital anda. Jadi mari kita mulakan. Saya akan membentangkan lukisan dan menulis penerangan untuk mereka.

    Dan satu lagi pengunduran, untuk menyunting dan melihat fail XML dengan mudah Saya mengesyorkan menggunakan program ini. Ia akan membolehkan anda melihat struktur fail dan mewarnakannya dengan mudah mengikut nilai. Sebagai contoh, saya akan mengambil rel tuala yang dipanaskan elektrik untuk bilik mandi, sudah tentu, bukan miliknya -), tetapi fail XML untuk pembentukan 2 unit memori dengan memperuntukkan bahagian dalam hak pemilikan bersama untuk memori peranti dengan nombor kadaster….
    Sebagai contoh, saya mula-mula akan menunjukkan gambar fail XML yang runtuh dengan satu blok runtuh.

    Jadi, berdasarkan pembilang baris yang terletak di sebelah kiri, kami mempunyai fail sebanyak 336 baris. Seperti yang dapat dilihat dari rajah, blok Diruntuhkan, ikon tambah di sebelah kanan. Oleh itu, saya mula-mula akan menerangkan baris demi baris apa yang boleh dilihat dari angka ini, dan kemudian kami akan menganalisis blok yang termasuk dalam blok Kerana ia adalah yang paling tebal.

    Kami tidak akan mempertimbangkan keseluruhan fail baris demi baris, tetapi akan mempertimbangkan hanya baris di mana data kami dimasukkan.

    3 baris : CodeType=”014″ – jenis kerja, hanya terdapat dua daripadanya, seperti dalam kes kami – pendidikan dan “015” – penjelasan. Versi =”03″ – Versi fail XML. GUID (Pengecam Unik Global) ​​adalah pengecam 128-bit unik dari segi statistik; dalam kes kami, nama fail mesti sepadan dengan penunjuk ini.
    4 baris : Data daripada organisasi tempat jurutera kadaster bekerja, atau data daripada jurutera kadaster itu sendiri.
    5 baris : Kod organisasi penerima, dalam kes ini Pejabat Perkhidmatan Persekutuan untuk Pendaftaran Negeri, Kadaster dan Kartografi untuk Republik Tatarstan.

    Sekarang mari segera pergi ke penghujung fail, berdasarkan angka yang dibentangkan, dan lihat pada blok . Di blok ini, maklumat tentang jurutera kadaster yang melakukan kerja dimasukkan. Seterusnya datang blok di mana sistem koordinat sesuai. By the way "dalam nilai teks fail, ia ditunjukkan dengan tanda petikan.

    Pada dasarnya, membuka fail dalam Notepad++, keseluruhan struktur fail XML menjadi jelas. – Lokasi – mengandungi alamat. Nilai dalam ditulis apabila sebahagian daripada alamat hilang daripada KLADR.

    Contoh fail XML peta pelan yang dijana dalam produk perisian pelan Peta Poligon

    Untuk melihat serpihan ini dengan lebih jelas, salin dan lihat dalam editor ujian Notepad++, yang boleh anda muat turun dari bahagian

    Dengan tersilap cara untuk mencapai tujuan, orang menjadi kecewa pada diri mereka sendiri dan orang lain, akibatnya tiada apa yang datang dari semua aktiviti mereka, atau sebaliknya dari apa yang mereka usahakan keluar.I. Goethe