Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Delivering Excellence in Software Engineering

Содержание

XML парсеры
XML парсеры SAX парсер (Simple API for XML) SAX API Использование SAX// Инстанциирование Reader XMLReader reader = new org.apache.xerces.parsers.SAXParser( ); // Старт SAX – XMLReader интерфейс SAX – ContentHandler SAX событияpublic void setDocumentLocator(Locator locator) { // Save this for later use SAX события SAX событияpublic void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAX событияpublic void characters(char[] ch, int start, int length) throws SAXException{	 //Не правильно	for (int i=0; i SAX парсинг// Создаем экземпляр для парсингаXMLReader reader = XMLReaderFactory.createXMLReader( ); //Создаем ContentHandler SAX - ErrorHandlerclass MyHandler implements ContentHandler, ErrorHandler SAX – ErrorHandler событияpublic void warning(SAXParseException exception) throws SAXException { try { SAX – ErrorHandler событияpublic void error(SAXParseException exception) throws SAXException public void fatalError(SAXParseException exception) throws SAXException DOM модель     text     text Структура DOM DOM парсингimport org.apache.xerces.parsers.DOMParser;…public void test(OutputStream outputStream) throws Exception { DOMParser parser = DOM - типы элементов// Determine action based on node type switch (node.getNodeType( Создание XML документаСоздание DOM дерева DOMImplementation domImpl = new DOMImplementationImpl( ); Document DOM - изменение XMLИзменение содержания элементаNodeList nameElements = root.getElementsByTagName( Использование Xerces(1) Xerces: DOM parserimport org.w3c.dom.Document; import org.apache.xerces.parsers.DOMParser; import org.w3c.dom.Document; String filename; Java Abstraction Layer for XML Processing (JAXP)XML Parsing and ValidationXSL ProcessingXPath XML парсинг с помощью JAXP Использование JAXP(1) JAXP: DOM parserimport javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; String filename; StAX (Streaming API for XML) Работа с документом во время парсинга как StAX – создание XmlStreamReader StringReader stringReader = new StringReader(documentAsString); XMLInputFactory inputFactory = StAX - XmlStreamReader интерфейс StAX - Разбор документаwhile (reader.hasNext( )) { int type = reader.next( ); StAX – создание документаimport javax.xml.stream.XMLOutputFactory;import javax.xml.stream.XMLStreamWriter; public class SimpleStreamOutput { public static JDOMJava представление XML модели.Не является парсером.Основан на классах.Имеет поддержку Xpath.Поддерживает XSLT трансформацию JDOM JDOMСоздание JDOM модели из SAX events и DOM моделиSAXBuilder builder = new dom4jJava представление XML моделиНе является парсеромЧасть API похожа с JDOMОснован на интерфейсахИмеет dom4jЧтение документаFile file = new File(path); SAXReader reader = new SAXReader( ); Presentation TitleFor more information, please contact:NameTitleEPAM Systems, Inc.Address City, State, Zip Code Phone: Fax: Email:http://www.epam.com
Слайды презентации

Слайд 2 XML парсеры

XML парсеры

Слайд 3 SAX парсер (Simple API for XML)

SAX парсер (Simple API for XML)

Слайд 4 SAX API

SAX API

Слайд 5 Использование SAX
// Инстанциирование Reader
XMLReader reader = new

Использование SAX// Инстанциирование Reader XMLReader reader = new org.apache.xerces.parsers.SAXParser( ); //

org.apache.xerces.parsers.SAXParser( );

// Старт парсинг
reader.parse(uri);
XMLReader reader =

XMLReaderFactory.createXMLReader( );

Выбор другого вендора
java -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser


Слайд 6 SAX – XMLReader интерфейс

SAX – XMLReader интерфейс

Слайд 7 SAX – ContentHandler

SAX – ContentHandler

Слайд 8 SAX события
public void setDocumentLocator(Locator locator) {
// Save

SAX событияpublic void setDocumentLocator(Locator locator) { // Save this for later

this for later use
this.locator = locator;
}
public

void startDocument( ) throws SAXException {
// No visual events occur here
}

public void endDocument( ) throws SAXException {
// No visual events occur here
}

Слайд 9 SAX события



SAX события

/>



public void startPrefixMapping(String prefix, String uri) {
// No visual events occur here.
namespaceMappings.put(uri, prefix);
}
public void endPrefixMapping(String prefix) {
// No visual events occur here.
for (Iterator i = namespaceMappings.keySet( ).iterator( );
i.hasNext( ); ) {
String uri = (String)i.next( );
String thisPrefix = (String)namespaceMappings.get(uri);
if (prefix.equals(thisPrefix)) {
namespaceMappings.remove(uri); break;
}
}


Слайд 10 SAX события
public void startElement(String namespaceURI, String localName, String

SAX событияpublic void startElement(String namespaceURI, String localName, String qName, Attributes atts)

qName, Attributes atts) throws SAXException


public void endElement(String namespaceURI,

String localName, String qName) throws SAXException

Слайд 11 SAX события
public void characters(char[] ch, int start, int

SAX событияpublic void characters(char[] ch, int start, int length) throws SAXException{	 //Не правильно	for (int i=0; i

length) throws SAXException{

//Не правильно
for (int i=0; i

{ System.out.println(ch[i]);
}

//Правильно
String data = new String(ch, start, length);
}

Слайд 12 SAX парсинг
// Создаем экземпляр для парсинга
XMLReader reader =

SAX парсинг// Создаем экземпляр для парсингаXMLReader reader = XMLReaderFactory.createXMLReader( ); //Создаем

XMLReaderFactory.createXMLReader( );

//Создаем ContentHandler
ContentHandler myHandler = new MyHandler();



//Регистрируем content handler
reader.setContentHandler(myHandler);

// Разбираем InputSource
inputSource = new InputSource(xmlURI);
reader.parse(inputSource);

Слайд 13 SAX - ErrorHandler
class MyHandler implements ContentHandler, ErrorHandler

SAX - ErrorHandlerclass MyHandler implements ContentHandler, ErrorHandler

Слайд 14 SAX – ErrorHandler события
public void warning(SAXParseException exception) throws

SAX – ErrorHandler событияpublic void warning(SAXParseException exception) throws SAXException { try

SAXException {
try {
FileWriter fw = new FileWriter("error.log");


BufferedWriter bw = new BufferedWriter(fw);
bw.write("Warning: " + exception.getMessage( ) + "\n");
bw.flush( );
bw.close( );
fw.close( );
} catch (IOException e) {
throw new SAXException("Could not write to log file", e);
}
}

Слайд 15 SAX – ErrorHandler события
public void error(SAXParseException exception) throws

SAX – ErrorHandler событияpublic void error(SAXParseException exception) throws SAXException public void fatalError(SAXParseException exception) throws SAXException

SAXException
public void fatalError(SAXParseException exception) throws SAXException


Слайд 16 DOM модель



text

DOM модель   text   text




text






Слайд 17 Структура DOM

Структура DOM

Слайд 18 DOM парсинг
import org.apache.xerces.parsers.DOMParser;

public void test(OutputStream outputStream) throws Exception

DOM парсингimport org.apache.xerces.parsers.DOMParser;…public void test(OutputStream outputStream) throws Exception { DOMParser parser

{
DOMParser parser = new DOMParser( );

// Get

the DOM tree as a Document object
FileInputStream fis = new FileInputStream(inputXML);
parser.parse(new InputSource(fis));
Document doc = parser.getDocument( );
}

Слайд 19 DOM - типы элементов
// Determine action based on

DOM - типы элементов// Determine action based on node type switch

node type
switch (node.getNodeType( ))
{
case Node.DOCUMENT_NODE: break;


case Node.ELEMENT_NODE: break;
case Node.TEXT_NODE: break;
case Node.CDATA_SECTION_NODE: break;
case Node.COMMENT_NODE: break;
case Node.PROCESSING_INSTRUCTION_NODE: break; case Node.ENTITY_REFERENCE_NODE: break;
case Node.DOCUMENT_TYPE_NODE: break;
}

Слайд 20 Создание XML документа
Создание DOM дерева
DOMImplementation domImpl =

Создание XML документаСоздание DOM дерева DOMImplementation domImpl = new DOMImplementationImpl( );

new DOMImplementationImpl( );
Document doc = domImpl.createDocument(null, "item", null);


Element root = doc.getDocumentElement( );

Добавление атрибута id
root.setAttribute("id", id);

Создание нового элемента и текста в нем
Element nameElement = doc.createElement("name");
Text nameText = doc.createTextNode(name); nameElement.appendChild(nameText);
root.appendChild(nameElement);


Слайд 21 DOM - изменение XML
Изменение содержания элемента
NodeList nameElements =

DOM - изменение XMLИзменение содержания элементаNodeList nameElements = root.getElementsByTagName(

root.getElementsByTagName("name");
Element nameElement = (Element)nameElements.item(0);
Text nameText = (Text)nameElement.getFirstChild(

); nameText.setData(name);

Получение description элемента
NodeList descriptionElements = root.getElementsByTagName("description");
Element descriptionElement = (Element)descriptionElements.item(0);

Удаление и создание другого description элемента
root.removeChild(descriptionElement);
descriptionElement = doc.createElement("description");
Text descriptionText = doc.createTextNode(description); descriptionElement.appendChild(descriptionText); root.appendChild(descriptionElement);

Слайд 22 DOM Serialization
Задаем формат DOM
OutputFormat format = new

DOM SerializationЗадаем формат DOM OutputFormat format = new OutputFormat(doc);  Создаем

OutputFormat(doc);

Создаем Writer и Serializer
StringWriter stringOut

= new StringWriter();
XMLSerializer serial = new XMLSerializer(stringOut, format);

получаем интерфейс DOMSerializer
serial.asDOMSerializer();

Сериализуем XML и получаем строку
serial.serialize(doc.getDocumentElement());
String result = stringOut.toString()

Слайд 23 Использование Xerces
(1) Xerces: DOM parser
import org.w3c.dom.Document;
import org.apache.xerces.parsers.DOMParser;

Использование Xerces(1) Xerces: DOM parserimport org.w3c.dom.Document; import org.apache.xerces.parsers.DOMParser; import org.w3c.dom.Document; String


import org.w3c.dom.Document;

String filename;
...
DOMParser parser = new

DOMParser();
parser.parse(filename);
Document doc = parser.getDocument();

(2) Xerces: SAX parser
import org.xml.sax.helpers.XMLReaderFactory;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.w3c.dom.Document;
DefaultHandler handler; String filename;
...
XMLReader parser = XMLReaderFactory.createXMLReader();
parser.setContentHandler(handler);
parser.setDTDHandler(handler);
parser.setErrorHandler(handler);
parser.parse(filename);

Слайд 24 Java Abstraction Layer for XML Processing (JAXP)
XML Parsing

Java Abstraction Layer for XML Processing (JAXP)XML Parsing and ValidationXSL ProcessingXPath

and Validation
XSL Processing
XPath


Слайд 25 XML парсинг с помощью JAXP

XML парсинг с помощью JAXP

Слайд 26 Использование JAXP
(1) JAXP: DOM parser
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;

Использование JAXP(1) JAXP: DOM parserimport javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; String


import org.w3c.dom.Document; String filename;
...
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();


DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(filename);

(2) JAXP: SAX parser
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.helpers.DefaultHandler;
import org.w3c.dom.Document;
DefaultHandler handler;
String filename;
...
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse(filename, handler);

Слайд 27 StAX (Streaming API for XML)
Работа с документом

StAX (Streaming API for XML) Работа с документом во время парсинга

во время парсинга как в SAX.
Приложение руководит порядком разбора



Слайд 28 StAX – создание XmlStreamReader
StringReader stringReader = new

StAX – создание XmlStreamReader StringReader stringReader = new StringReader(documentAsString); XMLInputFactory inputFactory

StringReader(documentAsString);
XMLInputFactory inputFactory = XMLInputFactory.newInstance( );
XmlStreamReader reader = inputFactory.createXMLStreamReader(stringReader);


Слайд 29 StAX - XmlStreamReader интерфейс

StAX - XmlStreamReader интерфейс

Слайд 30 StAX - Разбор документа
while (reader.hasNext( ))
{
int

StAX - Разбор документаwhile (reader.hasNext( )) { int type = reader.next(

type = reader.next( );
switch (type)
{
case XMLStreamConstants.

START_DOCUMENT: …
case XMLStreamConstants.END_DOCUMENT: …
case XMLStreamConstants.START_ELEMENT: …
case XMLStreamConstants.END_ELEMENT: …
case XMLStreamConstants. CHARACTERS: …
case XMLStreamConstants. ATTRIBUTE: …
case XMLStreamConstants. CDATA: …
case XMLStreamConstants. NAMESPACE: …
case XMLStreamConstants. COMMENT: …
case XMLStreamConstants. ENTITY_DECLARATION: …

}
}



Слайд 31 StAX – создание документа
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;

public class

StAX – создание документаimport javax.xml.stream.XMLOutputFactory;import javax.xml.stream.XMLStreamWriter; public class SimpleStreamOutput { public

SimpleStreamOutput {
public static void main(String[] args) throws Exception


{
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance( );
XMLStreamWriter writer = outputFactory.createXMLStreamWriter(System.out);

writer.writeStartDocument("1.0");
writer.writeStartElement("person");
writer.writeStartElement("name");
writer.writeStartElement("first_name");
writer.writeCharacters("Alan");
writer.writeEndElement( );
writer.writeEndElement( );
writer.writeEndElement( );
writer.writeEndDocument( );
writer.flush( );
}
}

Слайд 32 JDOM
Java представление XML модели.
Не является парсером.
Основан на классах.
Имеет

JDOMJava представление XML модели.Не является парсером.Основан на классах.Имеет поддержку Xpath.Поддерживает XSLT

поддержку Xpath.
Поддерживает XSLT трансформацию с помощью своего класса унаследованного

от TrAX API Template класса.

Слайд 34 JDOM
Создание JDOM модели из SAX events и DOM

JDOMСоздание JDOM модели из SAX events и DOM моделиSAXBuilder builder =

модели
SAXBuilder builder = new SAXBuilder( );
Document doc =

builder.build(new FileInputStream("contents.xml"));

DOMBuilder builder = new DOMBuilder( );
Document doc = builder.build(myDomDocumentObject);

Преобразование JDOM в DOM и в SAX events
DOMOutputter outputter = new DOMOutputter( );
org.w3c.dom.Document domDoc = outputter.output(myJDOMDocumentObject);

SAXOutputter outputter = new SAXOutputter( ); outputter.setContentHandler(myContentHandler); outputter.setErrorHandler(myErrorHandler); outputter.output(myJDOMDocumentObject);

Вывод JDOM
XMLOutputter outputter = new XMLOutputter( ); outputter.output(jdomDocumentObject, new FileOutputStream("results.xml"));

Слайд 35 dom4j
Java представление XML модели
Не является парсером
Часть API похожа

dom4jJava представление XML моделиНе является парсеромЧасть API похожа с JDOMОснован на

с JDOM
Основан на интерфейсах
Имеет поддержку Xpath
Интегрируется с JAXP для

XSLT

Слайд 36 dom4j
Чтение документа
File file = new File(path);
SAXReader reader

dom4jЧтение документаFile file = new File(path); SAXReader reader = new SAXReader(

= new SAXReader( );
Document doc = reader.read(file);
Создание документа
DocumentFactory

factory = DocumentFactory.getInstance( );
Document doc = factory.createDocument( );
или
Document doc = DocumentHelper.createDocument( );

Добавление элемента
долгий способ
Element myElement = factory.createElement("name");
doc.add(myElement);
быстрый способ
doc.addElement("name");


  • Имя файла: delivering-excellence-in-software-engineering.pptx
  • Количество просмотров: 100
  • Количество скачиваний: 0