1 / 73

XML парсери Обектен модел на документ – DOM SAX приложения Java XML парсери

XML парсери Обектен модел на документ – DOM SAX приложения Java XML парсери. Въведение в XML Parsing. Какво представлява XML “parser” ? Всяко XML приложение се базира на “парсер”. Java Application или Servlet. XML документ. XML Parser.

maik
Télécharger la présentation

XML парсери Обектен модел на документ – DOM SAX приложения Java XML парсери

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML парсериОбектен модел на документ – DOMSAX приложенияJava XML парсери

  2. Въведение в XML Parsing • Какво представлява XML “parser”? • Всяко XML приложение се базира на “парсер”. JavaApplication или Servlet XML документ XML Parser XML Parser позволява едно Java приложение или сървлет да има лесен достъп до XML данни.

  3. Въведение в XML Parsing • Дефиниране на задачите на XML parser • Извличане и четене на XML документ • Файлът може да се намира на локалната файлова система или на друг web сайт. • Парсерът поема функциите за всички необходими връзки с мрежата. • Това опростява работата, тъй като не се налага създаване на собствени мрежови връзки. • Осигуряване спазването на специфичните стандарти от XML документа • Документът съответства ли на съответното DTD? • Документът добре ли е форматиран? • Прави съдържанието на документа достъпно за приложението • Парсерът ще обработи XML документа така, че данните му да се ползват от приложението.

  4. Въведение в XML Parsing • Защо да се използва XML parser? • Ако приложението ще използва XML, то трябва да се пише собствен парсер. • Но е по-разумно да се използва създаден XML парсер. • Това позволява по-бързото изграждане на приложението. • Оценяване на парсерите • Парсерът от какъв вид е – валидиращ или не валидиращ? • Какъв е интерфейса, който осигурява парсера към XML документа? • Забележка: Парсер се превежда като синтактичен анализатор по принцип. Но за XML това понятие включва лексикален и синтактически анализ, разширение на параметричните единици на DTD, както и на вътрешни и външни единици, замяна на префиксите с URI на областите данни, контрол на съответствието документ-норми.

  5. Въведение в XML Parsing • Валидиращ парсер • Парсерът, който осигурява съответствието с DTD. • Не валидиращ парсер • Парсерът, който не проверява съответното DTD. • Много от парсерите имат опция за включване/изключване на валидиращата възможност.

  6. Въведение в XML Parsing • Архитектура на XML програма: • Парсерът обработва XML файла • Приложението използва съдържанието на файла чрез парсера. • Парсерът и Приложението трябва да имат общ модел на XML данните. • Парсерът чете XML документа и поставя дървовидната му структура в паметта. • Приложението обработва тази структура като XML документ (без да се притеснява от синтаксиса). • XML интерфейсните стандарти (това е интерфейса между парсер и приложение) са от значение защото: • По-лесно е създаването на XML приложения. • Възможна е размяната на парсери при развитие на приложението. • Улесняват изучаването на нови програмни средства.

  7. Въведение в XML Parsing Изпълнение и памет • Въпроси: • Кой парсер ще се изпълнява по-добре? • Кой парсер ще заема по-малко памет? • Валидиращи парсери: • По-резултатен • По-бавен • Заема повече памет • Не валидиращи парсери: • По-малко резултатни • По-бързиfaster • Заемат по-малка памет

  8. Въведение в XML Parsing • XML парсерът е COMкомпонента, която върви с Internet Explorer 5и по-високите. След инсталирането му, парсерът е достъпен за скриптове. • XML parserе програма, която се използва за зареждане на XMLдокумент в паметта. Информацията му може да се извлича и обработва чрез Document Object Model (DOM). • DOMе дървовидното представяне на XML документа. Най-високо в дървото еdocumentElement. Този елемент има един или повече върхове - наследници (childNodes), които представятклоновете на дървото. • Microsoft XML parser(парсерът) подържа всички функции за обхождане на дървото, достъп до върховете и атрибутните им стойности, вмъкване и изтриване на върхове и преобразуване на дървото в ХML.

  9. Въведение в XML Parsing • Microsoft XML parserподържа 13 типа върхове. • Най-често използваните типове върхове са:

  10. Въведение в XML Parsing XML интерфейси • Има два типа интерфейси, осигурявани от XML парсерите, които съответстват на двата модела на обработка на документи: • Object/Treeинтерфейс (базиран на дървото) - Document Object Model (DOM) • Event Basedинтерфейс (базиран на събитието) - Simple API for XML (SAX) Object/Tree интефейс • Дефиниция: Парсерът чете XML документ и създава “дървото на данните” в паметта. • APIпредоставя на приложението множество функции за обхождане на дървото.

  11. Въведение в XML Parsing Object/Tree интефейс • Примерът илюстрира създаването на дърво от парсера при • зададен XML документ. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE WEATHER SYSTEM "Weather.dtd"> <WEATHER> <CITY NAME="Hong Kong"> <HI>87</HI> <LOW>78</LOW> </CITY> </WEATHER> Зададен XML документ

  12. Object/Tree интефейс Weather City Дървото представя йерархията на XML документа. Hi Обърнете внимание на върховете Text Text: 87 Lo Text: 78

  13. Event Based интерфейс • Дефиниция: Парсерът чете XML документа, разпознава и интерпретира таговете при тяхното срещане. Всяка срещната конструкция се предава към приложението. • Този модел е обработка, управлявана от събитията. • За същия XML документ ще се създаде следната схема: • Генерирани събития: • Начало на елемент <Weather> • Начало на елемент <CITY> • Начало на елемент <HI> • Символно събитие: 87 • Край на елемент </HI> • Начало на елемент <LOW> • Символно събитие: 78 • Край на елемент </LOW> • Край на елемент </CITY> • Край на елемент </WEATHER>

  14. Event Based интерфейс • За всяко от тези събития, приложението изпълнява т.нар.“event handlers.” • Всеки път, когато се случи събитие, се извиква различенhandlerза съответното събитие. • Приложението улавя тези събития и ги обработва по съответен начин.

  15. Document Object Model (DOM) • Обектен модел (класове от обекти за представяне на елементите на XML файла) • Интерфейс базиран на дървото • Разглежда XML дървото като структура данни, подобно на DOM отJavascript • Разработен от W3C • Подържа както XML, така и HTML • Специфициран като използващIDL (Interface Definition Language). • Следователно, DOM версии съществуват за Java, JavaScript, C++, Perl, Python (IDLвърви с всеки от тях). • DOMе платформено и езиково независим интерфейс, който позволява динамичен достъп до документа за програми и скриптове, промяна на съдържанието, структурата и стила на документа. Документът може да бъде последващо обработван и резултатът от тази обработка да се включи обратно в страницата.

  16. Simple API for XML (SAX) • Базиран на събитие • Разработен от “доброволци”, участващи в xml-dev mailing list. • http://www.megginson.com/SAX/ • Много са приложенията, които налагат построяване на собствени типизирани структури от данни вместо използване на дървото, съответстващо на XML документа. В тези случаи е неефикасно построяване на дървото, а е достатъчно само да се нанесе в нова структура данни и да се изостави оригиналната. • Приложението обработва събитията точно, както и събитията от GUI без да е необходимо съхраняване на целия документ. • Възможно е конструиране на дървото с използване на API, базиран на събития.

  17. Simple API for XML (SAX) • XML дървото се разглежда не като структура данни, а като поток от събития, генерирани от парсера. • Видовете събития са: • Начало на документ • Край на документ • Съдържание на елемент • Символни данни • Единици • Обработваща инструкция • Грешки при парсиране • При сканиране на XML файла отначалото до края, всяко събитие предизвиква ответен метод, който програмата съдържа.Възможно е построяване на XML дърво, но не се изисква построяване на структурата данни. Документът може само да бъде “прислушан” (piped) от приложението.

  18. Сравнение наDOM иSAX • Приложението им зависи от естеството на обработката. • Моделът на дървото не се използва при документи с голям обем. • Ако приложението изисква произволен достъп до компонентите на дървото (интерактивни редактори и XML навигатори) се предпочита DOM модела. • Моделът на събитията (SAX) е предпочитан като по-икономичен и ефикасен при приложения за търсене на елементи (например със зададен символен низ).

  19. Java XML парсери • Първият браузер (IE 4.0 на Microsoft) подържащ XML съдържа два парсера. • Има голям брой XML парсери, писани на Java. • IBM XML Parser за Java • Един от първите, широко използвани парсери • Валидиращи и не валидиращои опции • ПодържаDOMиSAX • http://www.alphaworks.ibm.com/tech/xml4j • Sun Parser • Трябва да се сваля отделно от Java SDK. • Валидиращи и не валидиращи опции. • ПодържаDOMиSAX • http://java.sun.com/xml/

  20. Java XML парсери • Apache Xerces • Валидиращи и не валидиращи опции • ПодържаDOMиSAX • http://xml.apache.org • За пълен списък на XML Парсери:http://www.xmlsoftware.com/parsers • Важно е, че XML Парсери има и за много други езици: C/C++, JavaScript, Python, Perl, др. • Повечето парсери подържат DOM и SAX и имат валидиращи и не валидиращи опции.

  21. XML и програмиране • За използването на XML в езиците за програмиране е необходимо: • Преобразуване (parse) на XML документа в XML дърво • Обхожданена XML дървото • Конструиране на XML дърво • Извеждане на XML дървото като XML документ • DOMиSAXса съответнитеAPI, които са езиково независими и се подържат от много езици. JDOMеAPI, пригоден за Java.

  22. XML и програмиране • Парсер MSXML 3.0 (за IE 6.0 и XP) се характеризира: • JavaScript, VBScript, Perl, VB, Java, C++, т.н. • Пълна XML подръжка • Пълна DOM и Namespace подръжка • DTD и валидиране • Пълна XSLT и XPath подръжка • SAX2 • HTTP

  23. XML и програмиране • Как се използва DOM парсер? • DOM е вграден в Web браузера (след IE 5.0) • Първото DOM приложение: В XML файл (prices.xml), съдържащ имена и цени за стоки да се промени валутата (например от долар в евро). • HTML страница за JavaScript приложение (файл conversion.html) . . . <Script LANGUAGE=“Java Script” SRC=“conversion.js”></SCRIPT> . . . <FORM ID=“controls”> FILE:INPUT TYPE=“TEXT” NAME=“fname” VALUE=“prices.xml”> RATE:INPUT TYPE=“TEXT” NAME=“rate” VALUE=“0.9527” SIZE=“4”> <INPUT TYPE=“BUTTON” VALUE=“convert” ONCLICK=“convert(controls,xml)”> . . . <xml id=“xml”></xml> Вмъква XML в HTML

  24. XML и програмиране • HTML страница за JavaScript приложение (файл conversion.html) • Страницата дефинира формата с двете полета: fname (цените в XML файла) и rate (курс за смяна на валута). • В страницата се дефинира и изходно поле – output. • Бутонът “convert”извиква функцията на JavaScript convert() с два параметъра (формата и XML). • Скриптът извлича името на файла и курса на валутата от формата, комуникирайки с парсера.

  25. XML и програмиране • DOM е вграден в Web браузера (след IE 5.0) • Файл conversion.js е JavaScript за преобразуване на цените. function convert(form, xmldocument) { . . . var document = parse(fname, xmldocument); topLevel = document.documentElement; searchPrice(topLevel,output,rate); } function parse(uri, xmldocument) { xmldocument.asyn = false; xmldocument.load(uri); . . . return xmldocument; } function searchPrice (node, output, rate) { . . . } function getText(node) { return node.firstChild.data; } fname и rateсе получават от формата в HTML Зарежда XML документа и връща обекта Document

  26. XML и програмиране • DOM е вграден в Web браузера (след IE 5.0) • Изпълнението на скрипта в браузера води до резултат - преобразуваните цени.

  27. XML и програмиране • Основен връх(обект) на DOM – node • Повечето обекти са производни на node Таблица на кодовете на nodеType(код представящ типа обект) Type Code Element 1 Attribute 2 Text 3 CDATA section 4 Entity reference 5 Entity 6 Processing instruction 7 Comment 8 Document 9 Document type 10 Document fragment 11 Notation 12

  28. XML и програмиране • Nodeдефинира следните свойства, позволяващи движение в дървото: parentNode родител на текущ обект Node childNode списък наследници на текущ обект Node firstChild пръв наследник на Node lastChild последен наследник на Node previousSiblingNode непосредствен предшественик nextSiblingNode непосредствен наследник Attributes списък от атрибути, ако текущия има такива • Nodeдефинира и 2 свойства за обработка на обект: • nodeName името на Node (таг на елемента) • nodeValue стойност на Node (текст за текстов връх) • Documentе най-горния елемент в дървото на DOM (както корена в XSL).Парсерът връща обекта Document. • Наследява всички свойства на Node плюс: 1) documentElement (най-горен елемент в документа; 2) doctype (типа на документа)

  29. XML и програмиране Свойство съдържащо DOM обекта NodeList със свойства: length, item(i) function searchPrice (node, output, rate) { if(node.nodeType == 1) if(node.nodeName == “price”) output.value+= (getText(node) * rate) + “\r”; var children, I; children = node.ChildNodes; for(i=0; i<children.length ; i++) searchPrice(children.item(i) , output , rate); } Функцията проверява дали текущият връх е елементза цена и преобразува тази цена Всеки връх се обхожда рекурсивно (т.е. осъществява се движение по дървото)

  30. XML и програмиране • Обект Elementе наследник на Node и се използва за представяне на XML елементите. • Дефинира tagNameсвойство и методите: getElementsByTagName() – връща NodeList за всички наследници на елемента с дадено име; normalize() –реорганизира текстовите върхове под елемента. • Ако се търсят не само цените за да се преобразуват, но и имената на продуктите, то в скрипта трябва да се добавят и функциите: Функцията замества searchPrice, търсейки продуктите и извиква walkProduct (обработва име+цена) functionwalkNode(node, output, rate) { . . . } functionwalkProduct(node, output, rate) { . . . }

  31. XML и програмиране • Обработка на атрибути (ако цените в XML файла са в различна валута, то те се обработват по различен начин). • В този случай приложението съдържа следните файлове; • HTML файл – за дефиниране на интерфейса • XML файл за имена цени на стоките • XML файл с курсовете за различните валути (долар – евро; долар – франк и т.н.) • JavaScript файл, който прави преобразуванията • Функцията convert(. . . ) в случая разглежда 2 XML файла.

  32. XML и програмиране XML DOMпарсер – използване • За създаване на обект за XML документ с JavaScriptиIE 5.0, се използва: • Показаният код зарежда съществуващ XML документ("note.xml") вMicrosoft XMLпарсер: var xmlDoc=new ActiveXObject("Microsoft.XMLDOM") Създавасе обект на Microsoft XMLпарсера <script type="text/javascript"> var xmlDoc=new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("note.xml") . . . //обработка на документа . . . </script> Парсерът да не изпълнява скрипта преди зареждане на документа Парсерът зарежда XML документа

  33. XML и програмиране • Посоченият код зарежда текст вXMLпарсера: <script language="JavaScript"> var text="<note>" text=text+"<to>Tove</to><from>Jani</from>" text = text+"<heading>Reminder</heading>" text = text+"<body>Don't forget me this weekend!</body>" text = text+"</note>" var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.loadXML(text) // обработка на документа . . . </script> МетодътloadXML на мястотона методload зарежда текстов стринг

  34. XML и програмиране Обхождане на дървото • С използване наXML parserв браузера, HTMLстраницата може да се конструира като статичен документ с вграден JavaScriptза осигуряване на динамични данни. • ПримерниятJavaScriptчетеXMLданни от документ и ги записва в HTMLелементи. Получаване на HTML съдържание от XML файл <html> 1/2 <head> <script language="JavaScript“ . . . var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("note.xml") nodes = xmlDoc.documentElement.childNodes to.innerText = nodes.item(0).text from.innerText = nodes.item(1).text header.innerText = nodes.item(2).text body.innerText = nodes.item(3).text Резултат Data Internal Note To: ToveFrom: Jani Reminder Don't forget me this weekend!

  35. XML и програмиране Обхождане на дървото • ПримерниятJavaScriptчетеXMLданни от документ и ги записва в HTMLелементи. Достъп до XML елементи по име <html> 2/2 <body> <script language="JavaScript"> var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("note.xml") document.write ("The From element contains: ") document.write (xmlDoc.getElementsByTagName("from").item(0).text) </script> </body> </html> Резултат The From element contains: Jani

  36. XML и програмиране DOMи JAVA • DOM не се ограничава с браузерите, нито с JavaScript. • Най-много парсери са написани на JAVA. • При използването на DOM в Java, в действителност се използваJava language binding • Използват се същите обекти, както и в JavaScript, а обектите имат същите свойства и методи. • Две основни различия между JAVAи JavaScript: • Свойствата на JAVAимат вида: getPropertyName() JavaScript if(node.nodeName == “product”) if(node.getNodeName().equals (“product”)) Java

  37. XML и програмиране DOMи JAVA • Две основни различия между JAVAи JavaScript: • JAVAе силно типизиран език и преобразуването на типа между Node и наследници не е по подразбиране. protected static String getText(Node node) { Node child = node.getFirstChild(); if(child != null && child.getNodeType() == Node.Text_Node) { Text text = (text)child; return text.getdata(); } else return null; } Преобразуване на типа на Node към Text

  38. XML и програмиране • Пример, илюстриращ програма на Java, която използва DOMза да чете колекцията recipeза получаване само на първата рецепта от колекцията. import java.io.*; 1/4 import org.apache.xerces.parsers.DOMParser; import org.w3c.dom.*; public class FirstRecipeDOM { public static void main(String[] args){ try { DOMParser p = new DOMParser(); p.parse(args[0]); Document doc = p.getDocument(); Node n = doc.getDocumentElement().getFirstChild(); while (n!=null && !n.getNodeName().equals("recipe")) n = n.getNextSibling(); PrintStream out = System.out; out.println("<?xml version=\"1.0\"?>"); out.println("<collection>"); if (n!=null) print(n, out); out.println("</collection>"); } catch (Exception e) {e.printStackTrace();} } Собствен метод print

  39. XML и програмиране static void print(Node node, PrintStream out) { 2/4 int type = node.getNodeType(); switch (type) { case Node.ELEMENT_NODE: out.print("<" + node.getNodeName()); NamedNodeMap attrs = node.getAttributes(); int len = attrs.getLength(); for (int i=0; i<len; i++) { Attr attr = (Attr)attrs.item(i); out.print(" " + attr.getNodeName() + "=\"" + escapeXML(attr.getNodeValue()) + "\""); } out.print('>'); NodeList children = node.getChildNodes(); len = children.getLength(); for (int i=0; i<len; i++) print(children.item(i), out); out.print("</" + node.getNodeName() + ">"); break; • Примерс DOM

  40. XML и програмиране case Node.ENTITY_REFERENCE_NODE: 3/4 out.print("&" + node.getNodeName() + ";"); break; case Node.CDATA_SECTION_NODE: out.print("<![CDATA[" + node.getNodeValue() + "]]>"); break; case Node.TEXT_NODE: out.print(escapeXML(node.getNodeValue())); break; case Node.PROCESSING_INSTRUCTION_NODE: out.print("<?" + node.getNodeName()); String data = node.getNodeValue(); if (data!=null && data.length()>0) out.print(" " + data); out.println("?>"); break; }//end of switch }//end of print • Пример с DOM

  41. XML и програмиране static String escapeXML(String s) { 4/4 StringBuffer str = new StringBuffer(); int len = (s != null) ? s.length() : 0; for (int i=0; i<len; i++) { char ch = s.charAt(i); switch (ch) { case '<': str.append("&lt;"); break; case '>': str.append("&gt;"); break; case '&': str.append("&amp;"); break; case '"': str.append("&quot;"); break; case '\'': str.append("&apos;"); break; default: str.append(ch); } } return str.toString(); }//end of escapeXML }//end of class • Примерс DOM

  42. XML и програмиране - SAX • Парсер, базиран на събитие изпраща събитията по време на четене на XML документа. • Събитията са подобни на събитията на потребителския интерфейс: ONCLICK(за браузера) или AWT (за Java). • Събитията (свързани с елементи на XML документа, а не с действия на потребителя) са сигнал за приложението, че нещо се е случило и приложението трябва да отговори. • Интерфейсът е от по-ниско ниво от обектно-базираният. • SAX е дефиниран за Java и не е вграден в браузерите (има версии за Perl и Python, но не за С++ и JavaScript).

  43. XML и програмиране - SAX • Предимства на интерфейса • По-голям контрол на парсирането. • Възможност за оптимизиране на приложението • По-малко ресурси (не се строи дърво на документа) • Приложението може да започне обработката на документа едновременно с четенето му (не се чака да бъде прочетен целия документ) • Недостатъци на интерфейса • Не може да има движение в документа (след обработката на събитието, парсерът го забравя) • Приложението трябва да запазва събития, които ще бъдат от интерес за него. • Като цяло работата е по-трудоемка.

  44. XML и програмиране - SAX • Как се генерират събитията? • Дървото не се строи. • Приложението може да построи дървото на базата на получените от парсера събития. Генерират се 5 събития за първите 4 тага, като за съдържанието на name се генерира събитие чрез изпращането му като параметър <?xml version = “1.0”?> <product> <name>XML Training</name> <price price=“999.00” vendor=“X”/> <price price=“699.00” vendor=“Y”/> <price price=“799.00” vendor=“Z”/> <price price=“1999.00” vendor=“W”/> </product> Генерират се 8 събития за първите price елементите, като параметрите на елементите се изпращат със събитията за отвярящ таг.

  45. XML и програмиране • Събитията в SAX са дефинирани като методи на Java интерфейси. Приложението изпълнява някои от тях и ги регистрира като “handler”. • SAX групира тези събития в няколко интерфейса: • DocumentHandler – дефинира събития за документа (отварящ и затварящ таг) • DTDHandler - дефинира събития, свързани с DTD • EntityResolver - дефинира събития, свързани със зареждане на единици • ErrorHandler - дефинира събития за грешки. • SAX осигурява връзка с тези интерфейси в клас HanlerBase. Последният се разширява.

  46. XML и програмиране • Парсер • За регистриране на “handlers” за събития и започване на парсиране приложението ползва интерфейс Parser, като извиква метод parse(). • Методи в Parser: • parse() – стартира парсиране като задава или име на файл/URL или InputSource обект • setDocumentHandler(), setEntityResolver,.. –позволява на приложението да регистрира “handlers” за събития . • setLocate – извикване на съобщения за грешки parser.parse(args[0]);

  47. XML и програмиране • ParserFactory – създава обект на парсера, като взима името на класа за парсер. • DocumentHandler • Събитието се дефинира от интерфейса на DocumentHandler • Декларират се събития, свързани с документа. Възможни са: • Начало/край на документ: StartDocument(), EndDocument(); • Начало/край на елемент: StartElement(), EndElement(). Атрибутите се предават като AttributeList. Празни елементи генерират и двете събития; • Символи – при срещане на текст в елемента. Characters(); • Обработваща инструкция: processingInstruction(); • setDocumentLocator() –изпраща обект Locatorкъм приложението. Parser parser = ParserFactory.makeparser(parserClass);

  48. XML и програмиране • АtributeList – в събитието приложението получава името на елемента и списъка от атрибути. • Дефинирани са методите: • getLength() – връща дължина на атрибутен списък • getName(i) – връща името на атрибут • grtType(i)/getType(name) – връща типа на атрибут, зададен с номер или име • getValue(i) /getValue (name) – връща стойността на атибут • Locator – позволява на приложението да извлича позиция на ред и колона. Парсерът осигурява обект локатор. • Дефинирани са следните методи: • getColumnNumber() – връща колоната, където свършва събитието • getLineNumber() • getPublicId() • getSystemId()

  49. XML и програмиране • SAXException – повечето методи, дефнирани от стандарта обработват изключенията (“throw”). • Грешката може да бъде от парсирането или при обработката на събитията.

  50. XML и програмиране • Начален пример илюстриращ създаването на XML приложение на Java, използвайки SAXза частта на интерфейс с парсера. Етапите за следване са: • Написване на “handler”за документ, който ще дефинира методи за всеки тип събитие (начало на документ/елемент, край на елемент/документ, срещане на обработваща инструкция и т.н.). • Написване на “handler” за грешки. • Написване на “handler” за DTD. • Написване на частта за разрешаване на външни единици. • Избор на парсер (валидиращ или не валидиращ) при наличие на API SAX. • Записване на “handlers” в този парсер. • Стартиране на процеса на парсиране.

More Related