当前位置:首页 > xml实验指导书
《XML技术及应用》实验指导书
五、思考题
(1)CSS的基本作用是什么?
(2)CSS中元素显示定义之间有嵌套关系吗?
六、参考文献
1. 吴洁 编著,XML应用教程,清华大学出版社,118-149页,2007年5月
13
《XML技术及应用》实验指导书
实验六 DOM技术应用
一、实验目的
1、了解DOM技术的基本对象;
2、掌握DOM技术的常用对象的基本属性及方法; 3、掌握DOM技术在Java、C#语言里的简单使用。
二、实验要求
1、能使用DOM接口对XML文档进行解析; 2、能使用DOM接口创建XML文档。
三、实验原理
1、DOM模型在内存中为XML文档建立逻辑形式的节点树; 2、DOM接口是W3C组织提供的操作XML文档的接口。
四、实验内容 1.题目一
编写Java应用程序,使用DOM对象对指定的XML文档进行遍历,输出XML文档的所有节点。参考Java源文件如下。必须事先下载Xerces.jar包,设置到CLASSPATH路径。 import java.io.*;
import org.w3c.dom.*; import org.w3c.dom.Node; import org.xml.sax.*;
import org.apache.xerces.parsers.*; public class DOMSample {
static public void main(String[] argv) { try {
if (argv.length != 1) {
System.err.println(\ System.exit(1); }
BufferedReader in = new BufferedReader(new FileReader(argv[0])); DOMParser parser = new DOMParser(); parser.parse(new InputSource(in));
Document doc = parser.getDocument(); System.out.println(\元素是: \
printElements(doc); System.out.println();
System.out.println(\每个元素的属性是: \ printElementAttributes(doc); }
catch (SAXException s) {
System.out.println(s.toString()); } catch (IOException e) {
System.out.println(e.toString()); } }
14
《XML技术及应用》实验指导书
static void printElements(Document doc) {
NodeList nl = doc.getElementsByTagName(\表示匹配所有标记。 Node n;
for (int i=0;i System.out.print(n.getNodeName()+\ } } static void printElementAttributes(Document doc) { NodeList nl = doc.getElementsByTagName(\ Element e; Attr attr; NamedNodeMap nnm; String attrname; String attrval; int i,len; len = nl.getLength(); for (int j=0;j < len;j++) { e = (Element)nl.item(j); System.out.println(e.getTagName()+\ nnm = e.getAttributes(); if (nnm != null) { for (i=0;i attrval = attr.getValue(); System.out.println(\属性是:\ } } } } } C#语言的实现可参考教材P152的示例,VB的实现可参考教材P194的示例9.1。 2.题目二 使用DOM接口创建XML文档,实现语言不限。要求包括2个学生的基本信息,每个学生包括:班级(班级号、学生(姓名、学号、成绩(数学、英语、体育)))。Java的参考实现如下: import org.w3c.dom.*; import org.apache.xerces.dom.DocumentImpl; import org.w3c.dom.Document; import org.apache.xml.serialize.OutputFormat; import org.apache.xml.serialize.XMLSerializer; import java.io.*; public class DOMGenerate { public static void main( String[] argv ) { try { Document doc= new DocumentImpl(); Element root = doc.createElement(\ // Create Root Element 15 《XML技术及应用》实验指导书 Element item = doc.createElement(\ // Create element item.appendChild( doc.createTextNode(\ root.appendChild( item ); // atach element to Root element item = doc.createElement(\ // Create another Element item.appendChild( doc.createTextNode(\ root.appendChild( item ); // Attach Element to previous element down tree item = doc.createElement(\ item.appendChild( doc.createTextNode(\ root.appendChild( item ); // Attach another Element - grandaugther doc.appendChild( root ); // Add Root to Document OutputFormat format = new OutputFormat( doc ); //Serialize DOM // 创建一个File对象,代表DOM Tree所包含的数据的输出介质,这是一个XML文件。 File f = new File (\ // 创建文件输出流对象fos,请留意构造函数的参数。 FileOutputStream fos=new FileOutputStream(f); XMLSerializer serial = new XMLSerializer(format ); serial.setOutputByteStream(fos); // 串行化输出结果。 serial.asDOMSerializer().serialize(doc); } catch ( Exception ex ) { ex.printStackTrace(); } } } C#语言的实现可参考教材P156的示例,VB的实现可参考教材P153-154的示例。 五、思考题 (1)如何为题目2所建立的XML文档增加学生节点的子节点“专业”? (2)DOM解析器与SAX阅读器的原理与性能有何不同? 六、参考文献 1. 吴洁 编著,XML应用教程,清华大学出版社,175-194页,2007年5月 16
共分享92篇相关文档