SAX Парсинг XML и форматирование XML
Скачать (ZIP-файл; Размер - 24665)Обсудить в форуме
Описание
1. Парсинг XML через SAX (sax.mac)
1.1. Зарегистрировать через regsvr32.exe библиотеку vbxmlsax.dll перекинув ее в system32.
1.2. Перекинуть test.xml на c:\ или в любое другое место предварительно поменяв путь в макросе
2. Форматирование XML при сохранении (nicexml.mac)
1.1. Зарегистрировать через regsvr32.exe библиотеку vbxmlsax.dll перекинув ее в system32.
1.2. Перекинуть test.xml на c:\ или в любое другое место предварительно поменяв путь в макросе
2. Форматирование XML при сохранении (nicexml.mac)
Текст примера
// Парсинг XML через SAX (sax.mac) import activexfactory; var axf = ActiveXFactory(); var rdr, hnd; axf.createObj(rdr, "VBXMLSAX.CVBSAXXMLReader"); axf.createObj(hnd, "VBXMLSAX.CVBSAXContentHandler"); macro SAXContentHandler_StartDocument() println("Document start"); end; macro SAXContentHandler_EndDocument() println("Document End"); end; macro SAXContentHandler_StartElement (NamespaceUri, LocalName, QName, Attributes, Abort) println(" Start of " + LocalName); end; macro SAXContentHandler_EndElement (NamespaceUri, LocalName, QName, Abort) println(" End of " + LocalName); end; macro SAXContentHandler_Characters (Chars, Abort) if(chars =="\n") return; end; println(" Data: \"" + Chars + "\""); end; RslEvHandler.EvSource("SAXContentHandler") = hnd; rdr.contentHandler = hnd; rdr.parseURL ("c:\\test.xml"); // Форматирование XML при сохранении (nicexml.mac) import activexfactory; var axf = ActiveXFactory(); var rdr, writer, doc, stream; axf.createObj(rdr, "MSXML2.SAXXMLReader"); axf.createObj(writer, "MSXML2.MXXMLWriter"); axf.createObj(stream, "ADODB.Stream"); axf.createObj(doc, "MSXML2.DOMDocument"); stream.open; stream.Charset = "ISO-8859-1"; doc.loadXml("<doc><one>test1</one><two>test2</two></doc>"); writer.indent = true; writer.encoding = "ISO-8859-1"; writer.output = stream; rdr.contentHandler = writer; rdr.dtdHandler = writer; rdr.errorhandler = writer; rdr.putProperty("http://xml.org/sax/properties/lexical-handler", writer); rdr.putProperty("http://xml.org/sax/properties/declaration-handler", writer); rdr.parse(doc); writer.flush(); stream.saveToFile("c:\\output.xml"); rdr = null; writer = null; stream.close();