<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/index.php?action=history&amp;feed=atom&amp;title=XML_dokumentide_parsija</id>
	<title>XML dokumentide parsija - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/index.php?action=history&amp;feed=atom&amp;title=XML_dokumentide_parsija"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=XML_dokumentide_parsija&amp;action=history"/>
	<updated>2026-05-06T07:14:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=XML_dokumentide_parsija&amp;diff=22880&amp;oldid=prev</id>
		<title>Mvaling at 08:43, 28 January 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=XML_dokumentide_parsija&amp;diff=22880&amp;oldid=prev"/>
		<updated>2011-01-28T08:43:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:43, 28 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l98&quot;&gt;Line 98:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 98:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Autor==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Autor==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:Mvaling|Marko Valing, AK31(2010)]] 10:42, 28 January 2011 (EET)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:Mvaling|Marko Valing, AK31(2010)]] 10:42, 28 January 2011 (EET)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Skriptimiskeeled]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ico_mediawiki-ITK_:diff:1.41:old-22877:rev-22880:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Mvaling</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=XML_dokumentide_parsija&amp;diff=22877&amp;oldid=prev</id>
		<title>Mvaling: /* Skripti kirjeldus */</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=XML_dokumentide_parsija&amp;diff=22877&amp;oldid=prev"/>
		<updated>2011-01-28T08:42:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Skripti kirjeldus&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:42, 28 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Skripti kirjeldus==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Skripti kirjeldus==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kasutajalt küsitakse esimeseks sisendiks XML dokumendi nimi või &quot;*&quot;, juhul kui soovitakse kõikki kaustas olevaid XML dokumente töödelda. Seejärel kontrollitakse, et sisendiks antud dokumendi laiend oleks õige või pannakse massiivi kõikide kaustas olevate XML dokumentide nimed. Seejärel võetakse massiivist ükshaaval XML dokumendi nimed ning parsitakse, st võetakse XML dokumendist DataFile elementide vahel base64 kood, mis&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kasutajalt küsitakse esimeseks sisendiks XML dokumendi nimi või &quot;*&quot;, juhul kui soovitakse kõikki kaustas olevaid XML dokumente töödelda. Seejärel kontrollitakse, et sisendiks antud dokumendi laiend oleks õige või pannakse massiivi kõikide kaustas olevate XML dokumentide nimed. Seejärel võetakse massiivist ükshaaval XML dokumendi nimed ning parsitakse, st võetakse XML dokumendist DataFile elementide vahel base64 kood, mis dekodeeritakse ning salvestatakse DataFile atribuutdi Filename järgi. Luuakse kaust/kaustad, hakatakse parsima, pärast vaadatakse mitu faili on kaustas ning kausta suurus&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;dekodeeritakse ning salvestatakse DataFile atribuutdi Filename järgi. Luuakse kaust/kaustad, hakatakse parsima, pärast vaadatakse mitu faili on kaustas ning kausta suurus&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Skript==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Skript==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ico_mediawiki-ITK_:diff:1.41:old-22876:rev-22877:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Mvaling</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=XML_dokumentide_parsija&amp;diff=22876&amp;oldid=prev</id>
		<title>Mvaling: Created page with &#039;==Skripti kirjeldus== Kasutajalt küsitakse esimeseks sisendiks XML dokumendi nimi või &quot;*&quot;, juhul kui soovitakse kõikki kaustas olevaid XML dokumente töödelda. Seejärel kont…&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=XML_dokumentide_parsija&amp;diff=22876&amp;oldid=prev"/>
		<updated>2011-01-28T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;==Skripti kirjeldus== Kasutajalt küsitakse esimeseks sisendiks XML dokumendi nimi või &amp;quot;*&amp;quot;, juhul kui soovitakse kõikki kaustas olevaid XML dokumente töödelda. Seejärel kont…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Skripti kirjeldus==&lt;br /&gt;
Kasutajalt küsitakse esimeseks sisendiks XML dokumendi nimi või &amp;quot;*&amp;quot;, juhul kui soovitakse kõikki kaustas olevaid XML dokumente töödelda. Seejärel kontrollitakse, et sisendiks antud dokumendi laiend oleks õige või pannakse massiivi kõikide kaustas olevate XML dokumentide nimed. Seejärel võetakse massiivist ükshaaval XML dokumendi nimed ning parsitakse, st võetakse XML dokumendist DataFile elementide vahel base64 kood, mis&lt;br /&gt;
 dekodeeritakse ning salvestatakse DataFile atribuutdi Filename järgi. Luuakse kaust/kaustad, hakatakse parsima, pärast vaadatakse mitu faili on kaustas ning kausta suurus&lt;br /&gt;
==Skript==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
# Impordime vajalikud teegid&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
import glob&lt;br /&gt;
import time&lt;br /&gt;
import base64&lt;br /&gt;
import xml.dom.minidom&lt;br /&gt;
from xml.dom.minidom import parse&lt;br /&gt;
&lt;br /&gt;
# Loome vajalikud muutujad/massiivid&lt;br /&gt;
XMLDocument=&amp;quot;&amp;quot;&lt;br /&gt;
XMLDocuments=list()&lt;br /&gt;
&lt;br /&gt;
# Küsime kasutajalt faili nime või * juhul kui ta soovib töödelda kõikki kaustas olevaid faile&lt;br /&gt;
while (not os.path.exists(XMLDocument)):&lt;br /&gt;
    XMLDocument = raw_input(&amp;quot;Sisesta XML dokumendi nimi või * juhul kui soovid töödelda kõikki kaustas olevaid XML dokumente: &amp;quot;)&lt;br /&gt;
    # Kui kasutaja sisestas &amp;quot;*&amp;quot; siis salvestatakse kõik samas kaustas olevate XML dokumentide nimed massiivi ning kaktestatakse while tsükkel&lt;br /&gt;
    if XMLDocument == &amp;quot;*&amp;quot;:&lt;br /&gt;
        print &amp;quot;Kasutaja sisestas *&amp;quot;&lt;br /&gt;
        for files in glob.glob(&amp;quot;*.xml&amp;quot;):&lt;br /&gt;
            XMLDocuments.append(files)&lt;br /&gt;
        break&lt;br /&gt;
    # Kontrollime, kas kasutaja sisestatud dokumendi nime laiend on &amp;quot;.xml&amp;quot;&lt;br /&gt;
    elif XMLDocument[-4:] != &amp;quot;.xml&amp;quot;:&lt;br /&gt;
        print &amp;quot;Vale laiendiga nimi!&amp;quot;&lt;br /&gt;
    # Kui eelmistest kadalippidest läbitud kontrollime üle, kas dokument on olemas, et kuvada vastava sisuline teade&lt;br /&gt;
    elif not os.path.exists(XMLDocument):&lt;br /&gt;
        print &amp;quot;Faili ei eksisteeri!&amp;quot;&lt;br /&gt;
    # Juhul kui kasutaja sisestab ühe dokumendi lisame massiivi&lt;br /&gt;
    else:&lt;br /&gt;
        XMLDocuments.append(XMLDocument)&lt;br /&gt;
&lt;br /&gt;
# Kõik massiivis olevad dokumendid töötleme läbi&lt;br /&gt;
for XMLDocumentName in XMLDocuments:&lt;br /&gt;
    print &amp;quot;Dokumendi&amp;quot;, XMLDocumentName, &amp;quot;töötlemine&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    # Avame dokumendi&lt;br /&gt;
    XMLDocument = open(XMLDocumentName)&lt;br /&gt;
    # Loome dokumendi failidele kausta nimetuse&lt;br /&gt;
    dataFilesDir = XMLDocumentName[:-4]&lt;br /&gt;
    &lt;br /&gt;
    # Kontrollime, kas kaust on olemas, kui ei ole siis loome&lt;br /&gt;
    if not os.path.isdir(dataFilesDir):&lt;br /&gt;
        os.mkdir(dataFilesDir)&lt;br /&gt;
    &lt;br /&gt;
    # Käivitame kella, ehk anname muutujale hetke kellaaja&lt;br /&gt;
    seconds = time.time()&lt;br /&gt;
    # XML dokumendi parsimine&lt;br /&gt;
    XMLParsed = parse(XMLDocument)&lt;br /&gt;
    &lt;br /&gt;
    # Alustame failide salvestamisega dokumendist, kuvame infot kasutajale&lt;br /&gt;
    print &amp;quot;Dokumendi&amp;quot;, XMLDocumentName, &amp;quot;failid salvestatakse kausta:&amp;quot;, dataFilesDir&lt;br /&gt;
    # Iga DataFile elemendi kohta käivitatakse järgnev protsess&lt;br /&gt;
    for node in XMLParsed.getElementsByTagName(&amp;quot;DataFile&amp;quot;):&lt;br /&gt;
        # Dokumendi faili nimeks anname elemendi atribuudi, mis tähistab faili nime&lt;br /&gt;
        dataFileName = node.getAttribute(&amp;quot;Filename&amp;quot;)&lt;br /&gt;
        # Võtame elemendi väärtusest base64 kodeeritud andmed&lt;br /&gt;
        dataFileData = node.childNodes[0].nodeValue&lt;br /&gt;
        # Valmistame ette faili täispika asukoha koos nimega&lt;br /&gt;
        dataFileDir = os.path.join(dataFilesDir,dataFileName)&lt;br /&gt;
        # Avame faili, luuakse uus fail&lt;br /&gt;
        fileObj = open(dataFileDir, &amp;quot;w&amp;quot;)&lt;br /&gt;
        # Salvestame faili base64 dekodeeritud andmed&lt;br /&gt;
        fileObj.write(base64.b64decode(dataFileData))&lt;br /&gt;
        # Fail suletakse&lt;br /&gt;
        fileObj.close()&lt;br /&gt;
        #Trükime välja faili nime ja suuruse&lt;br /&gt;
        dataFileSize = os.path.getsize(dataFileDir)&lt;br /&gt;
        print dataFileName, &amp;quot;%0.3f KB&amp;quot; % float(dataFileSize/1024.0)&lt;br /&gt;
    &lt;br /&gt;
    # Loome/taasväärtustame muutujad&lt;br /&gt;
    dataFilesSize=0&lt;br /&gt;
    dataFilesCount=0&lt;br /&gt;
    folder_size = 0&lt;br /&gt;
    # Iga faili kohta kaustas toimub järgnev tegevus&lt;br /&gt;
    for (path, dirs, files) in os.walk(dataFilesDir):&lt;br /&gt;
        for file in files:&lt;br /&gt;
            # Tuletame faili täispika nime jälle&lt;br /&gt;
            dataFileName = os.path.join(path, file)&lt;br /&gt;
            # Liidame failide kogumahule faili mahu&lt;br /&gt;
            dataFilesSize += os.path.getsize(dataFileName)&lt;br /&gt;
            # Liidame faili loendurile ühe juurd&lt;br /&gt;
            dataFilesCount+=1&lt;br /&gt;
    # Trükime välja mitu faili kokku dokumendist kättesaadis ning kogumaht&lt;br /&gt;
    print &amp;quot;Kokku&amp;quot;,dataFilesCount,&amp;quot;faili mahuga %0.3f KB&amp;quot; % float(dataFilesSize/1024.0)&lt;br /&gt;
    # Näitame kaua kulus töötlemisele aega, lõpp lahutatud algus=stopper&lt;br /&gt;
    seconds = time.time() - seconds&lt;br /&gt;
    print &amp;quot;XML faili töötluseks kulus %.3f sekundit&amp;quot; % seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Autor==&lt;br /&gt;
--[[User:Mvaling|Marko Valing, AK31(2010)]] 10:42, 28 January 2011 (EET)&lt;/div&gt;</summary>
		<author><name>Mvaling</name></author>
	</entry>
</feed>