XML Parser dung tài liệu XML theo mô hình cây phân cấp for XML , StAX Parser: phát sinh các sự kiện trong quá trình duyệt tài liệu Xml... Application sẽ tạo các event listener lắng nghe
Trang 1Trình bày: Ngô Bá Nam Phương
Lập trình XML với Java
Trang 2Nội dung trình bày
Trang 3XML Parser
dung tài liệu XML theo mô hình cây phân cấp
for XML ), StAX Parser: phát sinh các sự kiện trong quá trình duyệt tài liệu Xml
Trang 5DOM Parser
Trang 6SAX Parser
lớn và nội dung xử lý tương đối đơn giản
trình đọc tài liệu Application sẽ tạo các
event listener lắng nghe các event do
parser phát ra để truy xuất nội dung tài
liệu
Parser DOM Parser xây dựng cây tài liệu DOM tree dựa trên các event nó nhận
được do SAX Parser trả về
Trang 7StAX Parser (Streaming API for XML )
đơn giản và thuận tiện hơn SAX parser
các sự kiện cần quan tâm để truy xuất nội dung tài liệu
Trang 8
Nội dung trình bày
Đọc nội dung tài liệu XML
Trang 9Đọc tài liệu XML
Trang 11DOM Parser
// truy cập node gốc của tài liệu
Element root =
// lấy về danh sách node con của một node
Trang 12DOM Parser
// Xử lý các node con dạng Element
NodeList list = root.getChildNodes();
for(int i=0;i<list.getLength();++i)
{
Node node = list.item(i);
if(node instanceof Element )
{
// xử lý node name và size
Element element = ( Element ) node;
}
}
Trang 13Text textNode = (Text)element.getFirstChild();
if(element.getTagName().equals(“name”))
name = content;
size = Integer.parseInt(content);
Trang 14DOM Parser
các node con của 1 node
Trang 15DOM Parser
getAttributes : trả về NamedNodeMap đại diện cho danh sách các attribute của node
NamedNodeMap attributes = element getAttributes ();
for(int i=0;i<attributes.getLength();++i)
{
Node attributeNode = attributes.item(i);
String name = attributeNode getNodeName ();
String value = attributeNode getNodeValue ();
}
Trang 16DOM Parser
tính
< Sach MaSach =“1” TenSach =“VB.NET” />
String maSach = element getAttribute (“ MaSach ”); String tenSach = element getAttribute (“ TenSach ”);
Trang 17Đọc tài liệu XML
XPath Expression
Trang 18XPath
cập đến các node trong cây tài liệu dễ
dàng mà không cần phải duyệt và tìm
kiếm trên toàn bộ cây tài liệu
Trang 21Đọc tài liệu XML
StAX Parser
Trang 22StAX Parser - Events
START_ELEMENT , element name: font
START_ELEMENT , element name: name
END_ELEMENT , element name: name
START_ELEMENT , element name: size
END_ELEMENT , element name: size
END_ELEMENT , element name: font
Trang 25StAX Parser
Lấy giá trị thuộc tính bên trong Element:
< Sach SoTrang ="102" ISBN ="104">
String soTrang = parser.getAttributeValue(null,
"SoTrang");
String ISBN =
parser.getAttributeValue(null,"ISBN");
Trang 26Nội dung trình bày
Tạo tài liệu XML
Trang 27Tạo tập tin XML – DOM Parser
Trang 28Tạo tập tin XML - DOM
Element root =
Element child1 =
Trang 29
Tạo tập tin XML - DOM
XML DOM API hiện thời không hỗ trợ việc kết xuất nội dung cây tài liệu lên bộ nhớ phụ Ta có thể sử dụng
XSLT để thực hiện:
import javax.xml.transform.*;
Transformer t =
TransformerFactory newInstance().newTransformer();
t.setOutputProperty ( OutputKeys.INDENT , "yes");
t.setOutputProperty (OutputKeys.METHOD , "xml");
t.setOutputProperty
("{http://xml.apache.org/xslt}indent-amount", "2");
t.transform(new DOMSource (doc), new
StreamResult (new FileOutputStream ( "temp.xml" )));
Trang 30Tạo tập tin Xml - StAX
Trang 31Tạo tập tin Xml - StAX
File file = new File("StAXOutput.xml");
Trang 32Tạo tập tin Xml - StAX
writer writeStartElement (“Sach”);
writer writeAttribute (“ MaSach ”,” 123 ”);
writer writeStartElement (“TenSach”);
writer writeCharacters (“ harry potter ”); writer writeEndElement ();
writer writeStartElement (“GiaTien”);
writer writeCharacters (“ 123000 ”); writer writeEndElement ();
writer writeEndElement ();
writer writeEndDocument ();
Trang 33Nội dung trình bày
XSLT
Trang 34XSLT – XSL Transformation
tài liệu XML sang format khác ( plain text, XML, HTML, )
Trang 36Biểu thức XPATH
Trang 38-Không có template
Mặc định : trả ra nội dung của thẻ a1
< xsl:template match =“/”>
< /xsl:template >
<xsl:apply-templates/>
Trang 40</ xsl:template >
Trang 41< xsl:value-of select ="hiredate/@day" /> -
< xsl:value-of select ="hiredate/@month" /> -
< xsl:value-of select ="hiredate/@year" />
</ td >
</ tr >
</ xsl:template >
Trang 42XSLT – XSL Transformation
StreamSource styleSource = new
StreamSource (styleSheet);
TransformerFactory factory =
TransformerFactory newInstance();
Transformer t =
t.transform( new StreamSource (file), new
StreamResult ( “output.html" ));
Trang 43Cám ơn – Hỏi đáp