12.XML
.pdf
е . ел |
е ул т т |
Student:
name: Nikolaj surname: Ivanov age: 23
group: PF-11 Student:
name: Petr surname: Kilkin age: 22
group: FP-22 Student:
name: Petr surname: Taranov age: 43
group: FP-33
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
11 |
о XML доку е то
XML п |
е |
: |
|
|
|
|
|
|
|
|
|
|
•DOM-п |
е |
(Document Object Model) – п ед |
тел |
о |
||||||||
л |
|
ует |
XMэ-доку |
е т |
о |
ет |
де е о |
ле |
е то |
|||
XMэ |
опе т |
о п |
т |
. Т е |
о |
теле |
к е у |
. |
|
|||
•SAX-п |
е |
(Simple API for XML) — п е , о |
о |
|
|
|||||||
о |
т |
event-based . |
|
т , |
|
ет |
о |
тол ко |
|
|||
ко к |
ет |
о |
т |
доку |
е |
т . |
|
ет |
ло п |
т . |
|
|
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
12 |
SAX API
SAX API |
п |
е е org.xml.sax |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
ед т |
л ет |
леду |
|
е |
те |
е |
дл |
|
пул |
о |
|
XML: |
|
|
|
|
|||
• |
ContentHandler – кл |
е о |
|
те |
е . |
|
|
|
л |
е |
етод |
те |
е |
|
||||||
|
XMLReader |
оо |
|
ет п ло е |
|
о |
оде |
о |
|
|
е |
о о доку |
е т |
|
|
|||||
• |
DTDHandler – оп едел ет |
етод |
кото |
е |
пол |
у |
т |
дл |
полу е |
от |
|
|
||||||||
|
XMэReader |
о |
|
|
о |
от |
|
|
ео |
т |
е |
о |
|
ле |
у |
о те |
|
|||
|
DTD доку е т . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
• |
ErrorHandler – |
пол |
ует |
дл |
е е |
|
де о |
п едуп е |
де |
, о |
ке |
л |
||||||||
|
е |
п |
о о |
|
ке. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
• |
InputSource – оп |
|
|
ет |
то |
|
к |
од |
|
д |
: поток |
т |
л |
оло , |
л |
|||||
|
т.п. откуд п |
е |
у |
т |
т |
доку |
е |
т. |
|
|
|
|
|
|
|
|
|
|||
• |
XMLReader – о |
о |
о |
те |
е |
оде |
|
|
етод |
п |
е |
е л |
о |
е |
|
|||||
|
д у |
кл |
, т к |
к к SAXParser |
л |
SAXParcerFactory |
|
|
|
|
|
|||||||||
• |
кет org.xml.sax.helpers – оде |
т по о тел |
е кл |
ео од |
е п |
|
|
оте SAX-п е |
: DefaultHandler, XMLReaderFactory, XMLReaderImpl, |
|
|||
ParserAdapter.
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
13 |
е. SAX-п
1.import javax.xml.parsers.*;
2.import org.xml.sax.*;
3.import java.io.IOException;
4.public class SAXExample extends org.xml.sax.helpers.DefaultHandler {
5.public void process(String filename)
6.throws SAXException, IOException, ParserConfigurationException {
7.SAXParserFactory.newInstance().
8.newSAXParser().parse(filename, this);
9.}
10.public static void main(String[] args) throws Exception {
11.
12.new SAXExample().process(args[0]);
13.}
14. ...
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
14 |
е . SAX-п |
. одол е е |
14. ...
15.private int level = 0;
16.private boolean inStudent = false;
17.private StringBuffer text = new StringBuffer();
18.@OVERRIDE
19.public void startElement(String uri, String localName, String qName, Attributes attributes)
20.throws SAXException {
21.
22.level++;
23.if (level == 2 && qName.equals("student")) {
24.inStudent = true;
25.System.out.println("Student:");
26.}
27.text.setLength(0);
28.}
29.@OVERRIDE
30.public void characters(char[] ch, int start, int length) throws SAXException {
31.text.append(ch, start, length);
32.}
33.@OVERRIDE
34.public void endElement(String uri, String localName, String qName) throws SAXException {
35.if (level == 3 && inStudent)
36.System.out.println(" "+ qName +": "+ text);
37.if (level == 2)
38.inStudent = false;
39.level--;
40.}
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
15 |
DOM API
DOM API |
п |
|
е е org. |
|
3c.dom) |
|
|
|
|
|
|
|
|||||
ед т л ет леду |
|
е |
те |
е |
|
: |
|
|
|
|
|
|
|
|
|
||
• Node – п ед т |
л ет п |
о |
|
ол |
|
|
ле |
е т де |
е |
кл |
|
тек т |
т |
ут . |
|||
• Document – п ед т |
л ет доку |
е т DOM |
|
лу |
т ко |
|
е де е |
доку е т . |
|||||||||
• DocumentType – д |
|
|
|
те |
|
е |
п ед т |
л ет DTD доку е |
т |
|
|
||||||
• Element – п |
ед т |
л ет |
ле |
е |
т |
т |
доку |
|
е т , кото |
|
о |
ет |
ет |
поду л . |
|||
• DocumentFragment – п ед т |
л ет |
т |
л |
е |
т |
доку |
е |
т , од |
л |
||||||||
е кол ко |
е |
|
у ло |
о |
е |
под ле |
|
е т |
. |
|
|
|
|
|
|||
• CDATASection – п ед т |
|
л ет |
|
дел CDATA. |
|
|
|
|
|
|
|
||||||
• NodeList – п ед т |
л ет упо |
до е |
ое |
о |
е т о у ло |
п ед |
|
е |
тол ко |
||||||||
дл те . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
• DOMException – п |
по о |
де |
|
о |
к API DOM |
о д ет |
к е |
пл д |
о о |
||||||||
кл |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
16 |
е. DOM-п
1.import org.w3c.dom.*;
2.import javax.xml.parsers.*;
3.import org.xml.sax.*;
4.import java.io.IOException;
5.public class DOMExample {
6.public static Document parse(String filename)
7.throws ParserConfigurationException, SAXException, IOException {
8.return DocumentBuilderFactory.newInstance().
9. newDocumentBuilder().parse(filename);
10.}
11.public static void main(String[] args) throws Exception {
12.Document doc = parse(args[0]);
13.NodeList items = doc.getDocumentElement().getChildNodes();
14.for (int i = 0; i < items.getLength(); i++)
15. if (items.item(i).getNodeName().equals("student"))
16. printStudent(items.item(i));
17.}
18.private static void printStudent(Node node) {
19.System.out.println("Student:");
20.NodeList nodes = node.getChildNodes();
21.for (int i = 0; i < nodes.getLength(); i++)
22. |
if (nodes.item(i).getNodeType() == Node.ELEMENT_NODE) |
23. |
System.out.println(" "+ nodes.item(i).getNodeName() + ": "+ |
24. |
nodes.item(i).getFirstChild().getNodeValue()); |
25. |
} |
26.} |
|
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
17 |
XSL – eXtensible Stylesheet Language
• XSLT – т |
|
о |
|
. XML доку |
е т, оп |
|
по о |
п ео |
о |
|
од о о XML доку |
е т д у о |
е о |
тел о |
|
XML) доку |
е т. |
о т |
т о е |
|
|
|
|
http://www.w3.org/1999/XSL/Transform.
• XPath – |
XML |
. С |
,
,
щ .
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
18 |
XSLT – eXtensible Stylesheet Language Transformations
•<template match="xpath expression">... body ...</template>
•<value-of select="xpath expression"/>
•<for-each select="xpath expression">... body ...</for-each>
•<sort select="xpath"/>
•<if test="xpath">...</if>
•<choose>
<when test="xpath">...</when> <otherwise>...</otherwise> </choose>
•<apply-templates select="xpath"/>
•<output method="xml|html|text" version="string" encoding="string" omit-xml-declaration="yes|no" doctypepublic="string"
doctype-system="string" indent="yes|no"/>
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
19 |
XPath
•е : /html/body/*/span[@name="span1"
оо: /child::html/child::body/child::*/child::span[attribute::name="span1"]
•О :
ancestor, ancestor-or-self, attribute (@), child (нет), descendant, descendant-or-self (//), following, following-sibling, namespace, parent (..), preceding, preceding-sibling, self (.)
•Фу к :
document, format-number, node, text, current, position, last, count, id, sum
• |
е : |
•node//li[last()]
•../text()
•/root/@attribute
•//book[price > 20]
•document($path)/root/node
© 2010 NetCracker Technology Corp. Confidential. |
12/17/2013 |
20 |
