|
Internet Explorer, МЕЯЛНРПЪ МЮ ЛНЫМСЧ БЯРПНЕММСЧ ОНДДЕПФЙС XML, ЯЕЦНДМЪ ДЮКЕЙН МЕ ЕДХМЯРБЕММНЕ ЯПЕДЯРБН, ЙНРНПНЕ ЛНФМН ХЯОНКЭГНБЮРЭ ДКЪ ПЮАНРШ Я МНБШЛ ЪГШЙНЛ. нАПЮАНРЙНИ XML ДНЙСЛЕМРЮ МЮ ЯРНПНМЕ ЙКХЕМРЮ ХКХ ЯЕПБЕПЮ ЛНФЕР РЮЙФЕ ГЮМХЛЮРЭЯЪ КЧАНИ ДПСЦНИ ЮМЮКХГЮРНП XML-ДНЙСЛЕМРНБ, ЙНРНПШИ ЙНМБЕПРХПСЕР ХУ Б НАШВМСЧ HTML ЯРПЮМХЖС ХКХ ХГБКЕЙЮЕР ХГ МЕЕ ХМТНПЛЮЖХЧ ДКЪ ДПСЦХУ ОПХКНФЕМХИ.
вРН РЮЙНЕ XML Parser?
кЧАНИ XML-ОПНЖЕЯЯНП, ЪБКЪЪЯЭ, ОН ЯСРХ, РПЮМЯКЪРНПНЛ ЪГШЙЮ ПЮГЛЕРЙХ, ЛНФЕР АШРЭ ПЮГАХР МЮ МЕЯЙНКЭЙН ЛНДСКЕИ, НРБЕВЮЧЫХУ ГЮ КЕЙЯХВЕЯЙХИ, ЯХМРЮЙЯХВЕЯЙХИ Х ЯЕЛЮМРХВЕЯЙХИ ЮМЮКХГ ЯНДЕПФХЛНЦН ДНЙСЛЕМРЮ. оНМЪРМН, ВРН ЕЯКХ АШ ЛШ АШКХ БШМСФДЕМШ ЙЮФДШИ ПЮГ ОХЯЮРЭ БЯЕ ЩРХ АКНЙХ ЯЮЛНЯРНЪРЕКЭМН, МЕНАУНДХЛНЯРЭ Б XML ЙЮЙ Б РЮЙНБНЛ АШ НРОЮКЮ - НЯМНБМНЕ ЕЦН ОПЕХЛСЫЕЯРБН, ЙЮЙ СФЕ СОНЛХМЮКНЯЭ ПЮМЕЕ, ГЮЙКЧВЮЕРЯЪ Б ЯРЮМДЮПРМНЛ ЯОНЯНАЕ ХГБКЕВЕМХЪ ХМТНПЛЮЖХХ ХГ ДНЙСЛЕМРЮ. яХМРЮЙЯХВЕЯЙХ ОПЮБХКЭМН ЯНЯРЮБКЕММШИ XML-ДНЙСЛЕМР ЛНФЕР АШРЭ ПЮГНАПЮМ КЧАШЛ СМХБЕПЯЮКЭМШЛ XML ЮМЮКХГЮРНПНЛ, Х МЮЬЕЛС XML-НАПЮАНРВХЙС НЯРЮЕРЯЪ КХЬЭ ХЯОНКЭГНБЮРЭ ОНКСВЕММШЕ МЮ ЕЦН БШУНДЕ "ВХЯРШЕ" ДЮММШЕ (ОПНЬЕДЬХЕ ЯХМРЮЙЯХВЕЯЙХИ ЮМЮКХГ) - ХМРЕПОПЕРХПНБЮРЭ ЯНДЕПФХЛНЕ ДНЙСЛЕМРЮ, Б ЯННРБЕРЯРБХХ Я ЕЦН DTD-НОХЯЮМХЕЛ ХКХ ЯУЕЛЮЛХ ДЮММШУ.
йНМЕВМН, ЯХМРЮЙЯХВЕЯЙХИ ЮМЮКХГЮРНП ЛНФЕР АШРЭ ДНБНКЭМН КЕЦЙН ПЕЮКХГНБЮМ Х ЯЮЛНЯРНЪРЕКЭМН, МЮОПХЛЕП, Б Perl, Я ЕЦН ЛНЫМШЛХ БНГЛНФМНЯРЪЛХ НАПЮАНРЙХ ПЕЦСКЪПМШУ БШПЮФЕМХИ. мН Б НАЫЕЛ ЯКСВЮЕ РЮЙНИ "ПСВМНИ" ЯОНЯНА ЪБКЪЕРЯЪ ДНБНКЭМН МЕРПХБХЮКЭМНИ ГЮДЮВЕИ, РПЕАСЧЫЕИ МЕЙНРНПШУ СЯХКХИ Х ЪБКЪЕРЯЪ ДНОНКМХРЕКЭМШЛ ХЯРНВМХЙНЛ НЬХАНЙ. оНЩРНЛС ОПХЛЕМЕМХЕ СМХБЕПЯЮКЭМШУ XML-ЮМЮКХГЮРНПНБ ЛНФЕР ЯСЫЕЯРБЕММН НАКЕЦВХРЭ ФХГМЭ ПЮГПЮАНРВХЙЮЛ, РЕЛ АНКЕЕ, ВРН СФЕ ЯЕЦНДМЪ ЙНКХВЕЯРБН ЯБНАНДМН ДНЯРСОМШУ ОПНЦПЮЛЛ РЮЙНЦН ПНДЮ ДНБНКЭМН БЕКХЙН.
б ТСМЙЖХХ ЯНБПЕЛЕММНЦН XML-ОПНЖЕЯЯНПЮ НАШВМН БУНДХР ОНКСВЕМХЕ НАЫХУ ЯБЕДЕМХИ Н ДНЙСЛЕМРЕ, ХГБКЕВЕМХЕ ХМТНПЛЮЖХХ Н ЕЦН ЯРПСЙРСПЕ Х ОНЯРПНЕМХЪ МЕЙНРНПНИ ЮАЯРПЮЙРМНИ НАЗЕЙРМНИ ЛНДЕКХ ДЮММШУ, ОПЕДЯРЮБКЪЧЫЕИ ЩРС ЯРПСЙРСПС. оН ЯОНЯНАС ОПНБЕПЙХ ПЮГАХПЮЕЛШУ ДНЙСЛЕМРНБ СМХБЕПЯЮКЭМШЕ ОПНЦПЮЛЛШ-ЮМЮКХГЮРНПШ ДЕКЪРЯЪ МЮ ДБЮ РХОЮ: БЕПХТХЖХПСЧЫХЕ, ЯОНЯНАМШЕ НАМЮПСФХРЭ DTD-НОХЯЮМХЪ ЦПЮЛЛЮРХЙХ ЪГШЙЮ Х ХЯОНКЭГНБЮРЭ ХУ ДКЪ ОПНБЕПЙХ ДНЙСЛЕМРЮ МЮ ЯЕЛЮМРХВЕЯЙСЧ ЙНППЕЙРМНЯРЭ; Х МЕБЕПХТХЖХПСЧЫХЕ, МЕ НЯСЫЕЯРБКЪЧЫХЕ РЮЙНИ ОПНБЕПЙХ.
нОХЯШБЮЪ ПЮГНАПЮММШИ XML-ДНЙСЛЕМР, СМХБЕПЯЮКЭМЮЪ ОПНЦПЮЛЛЮ-ЮМЮКХГЮРНП ДНКФМЮ ОПЕДЯРЮБХРЭ ЕЦН ЯРПСЙРСПС Б БХДЕ СОНПЪДНВЕММНИ ЛНДЕКХ ДЮММШУ, ДКЪ ДНЯРСОЮ Й ЙНРНПНИ ХЯОНКЭГСЕРЯЪ ЙЮЙЮЪ-РН ЯРЮМЮДПРМЮЪ, НОХЯЮММЮЪ Б ЯННРБЕРЯРБСЧЫЕИ ЯОЕЖХТХЙЮЖХХ АХАКХНРЕЙЮ ЙКЮЯЯНБ - ХМРЕПТЕИЯНБ XML ДНЙСЛЕМРЮ. мЮ ЯЕЦНДМЪЬМХИ ДЕМЭ ЯСЫЕЯРБСЕР ДБЮ ОНДУНДЮ Й ХУ ОНЯРПНЕМХЧ: ЯНАШИРХИМШИ - Simple API for XML, SAX Х НАЗЕЙРМН-НПХЕМРХПНБЮММШИ - DOM(Document Object Model). пЮЯЯЛНРПХЛ ХУ ХЯОНКЭГНБЮМХЕ МЮ ЙНМЙПЕРМШУ ОПХЛЕПЮУ.
вРН РЮЙНЕ SAX
яЕЦНДМЪ ЯРЮМДЮПРМШЛ ХМРЕПТЕИЯНЛ ДКЪ АНКЭЬХМЯРБЮ СМХБЕПЯЮКЭМШУ XML-ЮМЮКХГЮРНПНБ ЪБКЪЕРЯЪ ЯНАШРХИМН-НПХЕМРХПНБЮММНЕ API SAX - Simple API for XML.
рЕПЛХМ ЯНАШРХИМН-НПХЕМРХПНБЮММШИ ЪБКЪЕРЯЪ ЙКЧВЕБШЛ Б ЩРНЛ НОПЕДЕКЕМХХ Х НАЗЪЯМЪЕР ЯОНЯНА ХЯОНКЭГНБЮМХЪ SAX. йЮФДШИ ПЮГ, ЙНЦДЮ ОПХ ПЮГАНПЕ XML ДНЙСЛЕМРЮ ЮМЮКХГЮРНП НЙЮГШБЮЕРЯЪ Б ЙЮЙНЛ-РН МНБНЛ ЯНЯРНЪМХХ - НАМЮПСФХБЮЕР ЙЮЙСЧ-КХАН ЯХМРЮЙЯХВЕЯЙСЧ ЙНМЯРПСЙЖХЧ XML-ДНЙСЛЕМРЮ (ЩКЕЛЕМР, ЯХЛБНК, ЬЮАКНМ, Х Р.Д.), ТХЙЯХПСЕР МЮВЮКН, ЙНМЕЖ НАЗЪБКЕМХИ ЩКЕЛЕМРНБ ДНЙСЛЕМРЮ, ОПНЯЛЮРПХБЮЕР DTD-ОПЮБХКЮ ХКХ МЮУНДХР НЬХАЙС, НМ БНЯОПХМХЛЮЕР ЕЦН ЙЮЙ ОПНХГНЬЕДЬЕЕ ЯНАШРХЕ Х БШГШБЮЕР БМЕЬМЧЧ ОПНЖЕДСПС - НАПЮАНРВХЙ ЩРНЦН ЯНАШРХЪ. хМТНПЛЮЖХЪ Н ЯНДЕПФХЛНЛ РЕЙСЫЕИ ЙНМЯРПСЙЖХХ ДНЙСЛЕМРЮ ОЕПЕДЮЕРЯЪ ЕЛС Б ЙЮВЕЯРБЕ ОЮПЮЛЕРПНБ ТСМЙЖХХ. нАПЮАНРВХЙ ЯНАШРХЪ - ЩРН ЙЮЙНИ-РН НАЗЕЙР ОПХКНФЕМХЪ, ЙНРНПШИ БШОНКМЪЕР МЕНАУНДХЛШЕ ДКЪ НАПЮАНРЙХ ОНКСВЕММНИ ХГ XML ХМТНПЛЮЖХХ ДЕИЯРБХЪ Х НЯСЫЕЯРБКЪЕР РЮЙХЛ НАПЮГНЛ МЕОНЯПЕДЯРБЕММШИ ПЮГАНП ЯНДЕПФХЛНЦН. оНЯКЕ ГЮБЕПЬЕМХЪ ЩРНИ ТСМЙЖХХ СОПЮБКЕМХЕ НОЪРЭ ОЕПЕДЮЕРЯЪ XML-ЮМЮКХГЮРНПС Х ОПНЖЕЯЯ ПЮГАНПЮ ОПНДНКФЮЕРЯЪ.
пЕЮКХГЮЖХЕИ ЩРНЦН ЛЕУЮМХГЛЮ Б Java SAX 1.0 ЪБКЪЕРЯЪ АХАКХНРЕЙЮ ЙКЮЯЯНБ org.xml.sax (ХУ ЛНФМН ОНКСВХРЭ, МЮОПХЛЕП, Я СГКЮ: www.megginson.com, МН НАШВМН ЩРХ ЙКЮЯЯШ БЙКЧВЮЧРЯЪ Б ЯНЯРЮБ XML -ЮМЮКХГЮРНПЮ). мЮЯКЕДСЪ ЙКЯЯШ SAX-ЯНБЛЕЯРХЛНЦН ЮМЮКХГЮРНПЮ, ЛШ ОНКСВЮЕЛ СМХБЕПЯЮКЭМШИ ДНЯРСО Й XML ДНЙСЛЕМРС ОПХ ОНЛНЫХ ЙКЮЯЯНБ, ЯНДЕПФХЛНЕ Х ЛЕУЮМХГЛ ХЯОНКЭГНБЮМХЕ ЙНРНПШУ ОПХБЕДЕМН Б ЯННРБЕРЯРБСЧЫЕЛ НОХЯЮМХХ.
оНЯКЕДНБЮРЕКЭМШИ ПЮГАНП XML-ДНЙСЛЕМРЮ SAX-НАПЮАНРВХЙНЛ НАШВМН ОПНХГБНДХРЯЪ ОН ЯКЕДСЧЫЕИ ЯУЕЛЕ (АНКЕЕ ОНДПНАМНЕ НОХЯЮМХЕ ОПХБЕДЕМН МХФЕ):
яЯШКЙЮ МЮ НАЗЕЙР ЙКЮЯЯЮ НАПЮАНРВХЙЮ ЯНАШРХИ ЛНФЕР ОЕПЕДЮБЮРЭЯЪ НАЗЕЙРС XML-ЮМЮКХГЮРНПЮ ОПХ ОНЛНЫХ ЯКЕДСЧЫХУ ТСМЙЖХИ:
parser.setDocumentHandler(event_class); // - НАПЮАНРВХЙ ЯНАШРХИ ДНЙСЛЕМРЮ
parser.setEntityResolver(event_class); // - НАПЮАНРВХЙ ЯНАШРХИ ГЮЦПСГЙХ DTD-НОХЯЮМХИ
parser.setDTDHandler(event_class); // - НАПЮАНРВХЙ ЯНАШРХИ ОПХ ЮМЮКХГЕ DTD-НОХЯЮМХИ
parser.setErrorHandler(event_class); // - НАПЮАНРВХЙ ВПЕГБШВЮИМШУ ЯХРСЮЖХИ
гДЕЯЭ event_class - НАЗЕЙР ЯНГДЮММНЦН МЮЛХ ПЮМЕЕ ЙКЮЯЯЮ.
йПЮРЙНЕ НОХЯЮМХЕ МЕЙНРНПШУ ХГ НАЗЕЙРНБ-НАПЮАНРВХЙНБ ЯНАШРХИ ОПХБЕДЕМН Б ЯКЕДСЧЫЕИ РЮАКХЖЕ:
нАЗЕЙР DocumentHandler
startDocument() |
мЮВЮКН ДНЙСЛЕМРЮ |
endDocument() |
йНМЕЖ ДНЙСЛЕМРЮ |
startElement (String name, AttributeList atts) |
мЮВЮКН ЩКЕЛЕМРЮ. тСМЙЖХХ ОЕПЕДЮЕРЯЪ МЮГБЮМХЕ ЩКЕЛЕМРЮ(НРЙПШБЮЧЫХИ РЩЦ) Х ЯОХЯНЙ ЕЦН ЮРПХАСРНБ. |
endElement (String name) |
йНМЕЖ ЩКЕЛЕМРЮ |
characters (char[] cbuf, int start, int len) |
нАПЮАНРЙЮ ЛЮЯЯХБЮ РЕЙЯРНБШУ ЯХЛБНКНБ |
ignorableWhitespace (char[] cbuf, int start, int len) |
мЕНАПЮАЮРШБЮЕЛШЕ ЯХЛБНКШ |
processingInstruction (String target, String data) |
нАПЮАНРЙЮ ХМЯРПСЙЖХИ XML-ЮМЮКХГЮРНПЮ) |
нАЗЕЙР ErrorHandler
warning (SAXParseException e) |
оНКСВЕМХЕ ЯННАЫЕМХЪ Н "МЕЯЕПЭЕГМНИ" НЬХАЙЕ. оДПНАМЮЪ ХМТНПЛЮЖХЪ ЯНДЕПФХРЯЪ Б ОЕПЕДЮБЮЕЛНЛ НАЗЕЙРЕ ЙКЮЯЯЮ SAXParseException |
error (SAXParseException e) |
яННАЫЕМХЕ НА НЬХАЙЕ |
fatalError (SAXParseException e) |
яННАЫЕМХЕ Н ЙПХРХВЕЯЙНИ НЬХАЙЕ |
дКЪ ДЕЛНМЯРПЖХХ ХЯОНКЭГНБЮМХЪ ЩРХУ ЛЕРНДНБ ПЮЯЯЛНРПХЛ МЕАНКЭЬНИ ОПХЛЕП НАПЮАНРВХЙЮ ПЕЦХЯРПЮЖХНММНЦН XML-ДНЙСЛЕМРЮ (ЕЦН ЯРПСЙРСПЮ НОХЯЮМЮ Б ОПХЛЕПЕ 2 ОЕПБНЦН ПЮГДЕКЮ ЯРЮРЭХ). Java-ОПХКНФЕМХЕ БШБНДХР ЯНДЕПФХЛНЕ ДНЙСЛЕМРЮ Х ХМТНПЛЮЖХЧ Н ЕЦН ЯРПСЙРСПЕ, ОСРЭ Й ДНЙСЛЕМРС ГЮДЮЕРЯЪ Б ЙНЛЮМДМНИ ЯРПНЙЕ. дКЪ ЙНЛОХКХПНБЮМХЪ ОНРПЕАСЕРЯЪ JDK 1.1.4 Х ЙКЮЯЯШ SAX, МЮУНДЪЫХЕЯЪ КХАН Б РЕЙСЫЕЛ ОЮЙЕРЕ, КХАН БЛЕЯРЕ Я ДПСЦХЛХ ЙКЮЯЯЮЛХ Б classes.zip.
import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import com.ibm.xml.parsers.DOMParser; import org.xml.sax.Parser; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.AttributeList; import org.xml.sax.HandlerBase; import org.xml.sax.helpers.ParserFactory; class saxParser extends HandlerBase{ private PrintWriter out; private int elements; private int attributes; private int characters; private int ignorableWhitespace; private String url; public saxParser(String url_str) { url = url_str; try { out = new PrintWriter(new OutputStreamWriter(System.out, "koi8-r")); } catch (UnsupportedEncodingException e) { } } //======================================================= // нАПЮАНРВХЙХ ЯНАШРХИ. лЕРНДШ ХМРЕПТЕИЯЮ DocumentHandler //======================== // мЮВЮКН ДНЙСЛЕМРЮ public void startDocument() { // яРЮРХЯРХЙЮ elements = 0; attributes = 0; characters = 0; ignorableWhitespace = 0; // оПНЖЕЯЯНПМШЕ ХМЯРПСЙЖХХ out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); } // йНМЕЖ ДНЙСЛЕМРЮ public void endDocument() { out.flush(); } // бЯРПЕРХКЯЪ НРЙПШБЮЧЫХИ РЩЦ ЩКЕЛЕМРЮ // public void startElement(String name, AttributeList attrs) { elements++; if (attrs != null) { attributes += attrs.getLength(); } // оЕВЮРЭ РЩЦЮ ЩКЕЛЕМРЮ БЛЕЯРЕ ЯН ЯОХЯЙНЛ ЕЦН ЮРПХАСРНБ, МЮОПХЛЕП, <elem id="48"> out.print('<'); out.print(name); if (attrs != null) { int len = attrs.getLength(); for (int i = 0; i < len; i++) { out.print(' '); out.print(attrs.getName(i)); out.print("=\""); out.print(attrs.getValue(i)); out.print('"'); } } out.println('>'); } // бЯРПЕРХКЯЪ ГЮЙПШБЮЧЫХИ РЩЦ ЩКЕЛЕМРЮ public void endElement(String name) { out.println("</"+name+">"); } // рЕЙЯРНБШЕ ЯХЛБНКШ public void characters(char ch[], int start, int length) { characters += length; out.println(new String(ch, start, length)); } // мЕНАПЮАЮРШБЮЕЛШЕ ЯХЛБНКШ(МЮОПХЛЕП, ЯНДЕПФХЛНЕ ЯЕЙЖХХ CDATA) public void ignorableWhitespace(char ch[], int start, int length) { characters(ch, start, length); } // хМЯРПСЙЖХХ XML-ОПНЖЕЯЯНПС public void processingInstruction (String target, String data) { out.print("<?"); out.print(target); if (data != null && data.length() > 0) { out.print(' '); out.print(data); } out.print("?>"); } //=================================================== // лЕРНДШ ХМРЕПТЕИЯЮ ErrorHandler //=============================== // оНЯКЕДМЕЕ ОПЕДСОПЕФДЕМХЕ public void warning(SAXParseException ex) { System.err.println("Warning at "+ ex.getLineNumber()+" . "+ ex.getColumnNumber()+" - "+ ex.getMessage()); } // оПНХГНЬКЮ НЬХАЙЮ public void error(SAXParseException ex) { System.err.println("Error at {"+ ex.getLineNumber()+" . "+ ex.getColumnNumber()+" - "+ ex.getMessage()); } // рЮЙХЕ НЬХАЙХ ХЯОПЮБХРЭ СФЕ МЕКЭГЪ public void fatalError(SAXParseException ex) throws SAXException { System.err.println("Fatal error at {"+ ex.getLineNumber()+" . "+ ex.getColumnNumber()+" - "+ ex.getMessage()); throw ex; } //======================================================= // бШБЕЯРХ ХМТНПЛЮЖХЧ Н ДНЙСЛЕМРЕ //=============================== public void printInfo() { System.out.println(); System.out.println("дНЙСЛЕМР "+url+" АШК СЯОЕЬМН НАПЮАНРЮМ"); System.out.println("щКЕЛЕМРНБ : "+elements); System.out.println("юРПХАСРНБ : "+attributes); System.out.println("яХЛБНКНБ : "+characters); } } //======================================================= // нАПЮАНРЙЮ XML ДНЙСЛЕМРЮ //======================== public class saxSample{ public static void main(String argv[]) { try { saxParser sample = new saxParser(argv[0]); Parser parser = ParserFactory.makeParser("com.ibm.xml.parsers.SAXParser"); parser.setDocumentHandler(sample); parser.setErrorHandler(sample); parser.parse(argv[0]); sample.printInfo(); } catch (Exception e) { e.printStackTrace(System.err); } } }
йНЛЛЕМРЮПХХ
оЕПБШЛ ЬЮЦНЛ Б ОПНЖЕЯЯЕ ОНЯРПНЕМХЪ XML-НАПЮАНРВХЙЮ ЪБКЪЕРЯЪ ЯНГДЮМХЕ НАЗЕЙРЮ ХГ ЙКЮЯЯЮ ЮМЮКХГЮРНПЮ (Б МЮЬЕЛ ЯКСВЮЕ ЩРН ЙКЮЯЯШ ХГ ОЮЕЙЕРЮ com.ibm.xml.parsers). дКЪ ЩРНЦН ЛНФМН ХЯОНКЭГНБЮРЭ ЙКЮЯЯ ParserFactory, БУНДЪЫХИ Б org.xml.sax.helpers:
import org.xml.sax.*; ... Parser parser = ParseFactory.createParser(); ...
гЮРЕЛ ЯКЕДСЕР НОПЕДЕКХРЭ НАПЮАНРВХЙХ БНГМХЙЮЧЫХУ Б ОПНЖЕЯЯЕ ПЮГАНПЮ XML-ДНЙСЛЕМРЮ ЯНАШРХИ. оПХКНФЕМХЧ МЕНАЪГЮРЕКЭМН СЯРЮМЮБКХБЮРЭ БЯЕ НАПЮАНРВХЙХ ЯПЮГС - Б ЙКЮЯЯЕ HandlerBase БЯЕ ЯНАШРХЪ ЛНЦСР НАПЮАЮРШБЮРЭЯЪ "ОН СЛНКВЮМХЧ". аНКЕЕ ОНДПНАМСЧ ХМТНПЛЮЖХЧ ОН ХЯОНКЭГНБЮМХЧ SAX-ЮМЮКХГЮРНПНБ ЛНФМН МЮИРХ Б ОПХЛЕПЮУ ОПХКНФЕМХИ Б ОЮЙЕРЮУ ЮМЮКХГЮРНПЮ ХКХ МЮ ЯЕПБЕПЕ www.megginson.com. йНЛЛЕМРЮПХХ, ТЮИКШ ОПХКНФЕМХИ Х ПЕГСКЭРЮРНБ ХУ ПЮАНРШ ЛНФМН МЮИРХ ОН ЮДПЕЯС www.mrcpk.nstu.ru/xml/
мЮГЮД | яНДЕПФЮМХЕ | бОЕПЕД
|