一、选择题1.XML采用以下哪种数据组织结构?( C )A 星状结构B 线状结构C树状结构D网状结构2.下列关于XML文档中根元素的说法不正确的是( D )A每一个结构完整的XML文档中有且只有一个根元素B 根元素完全包括了文档中其他所有元素C 根元素的起始标记要放在其他所有元素的起始标记之前,而根元素的结束标记要放在其他所有元素的结束标记之后D 根元素不能包含属性节点3.下面哪个公司或组织制定了XML:( C )A ISOB OracleC W3CD Micrsoft4.>、<、&等在XML文档中被赋予了特殊的意义,所以在XML文档中不能直接包含这些字符,而是对这些字符采用了特殊编码,< 对应的特殊编码是:(B)A &B <C &lgt;D &quto;5.以下说法不符合XML语法规则的是( C )A)标记头和标记末的大小写一致B)元素之间要正确的嵌套C)结束标记可有可无D)每个XML文档只能有一个根元素6.以下XML片段写法正确的是( D )A <root attribute=”first”/>B <root attribute=first />C <root attribute/>D <root attribute=”first” value=”aaa”/>E <root attribute=”first” value=”aaa”>7.用于修饰属性的缺省值不包含哪一项( C )A #FIXEDB #REQUIREDC #PCDATAD #IMPLIED8.以下关于SAX的说法正确的是( B )A)使用SAX可修改XMLB)SAX是事件驱动型XML解析器C)SAX是对象模型XML解析器D)以上答案都不对9.DOM解析中,下面( A )方法可以获得XML文档节点树的根元素节点。
A.getDocumentElement() B. getEntities()C. getPublicID()D. getWholeText()10.下列标记定义不合法的是(C)。
A. <price>B. <_author>C. <2title>D. <>11.解析下面XML文档时,下列说法正确的是(A)。
<book><author>耿祥义</author><ISBN>9787302206491</ISBN></book>A. “耿祥义”是文本对象B. “耿祥义”是元素对象C. <book>是元素对象,同样也是文本对象D. <ISBN>是元素对象,同样也是文本对象12.关于DOM的描述错误的是(C)。
A. DOM使开发者能够以编程方式读取、操作和修改XML文档B. W3C组织公布了DOM模型的规范,然后各个软件厂商(比如微软)再根据W3C的规范开发DOM解析器,并且提供一系列的编程API,这些API都是遵守W3C规范的C. DOM模型是W3C组织开发出来的一个在内存中表示XML数据的线性模型D. 能使用JavaScript进行DOM开发,也能使用Java、C#13.XML名称空间名是指(C)。
A. W3C制定的一个技术规范B. 一个可以访问到的URIC. 任何URID. 紧跟在xmlns:后面的前缀名称14.当SAX解析器解析到文档中元素的开始标记时,会调用( A )方法。
A.public void startElement()B.public void startDocument()C.public void startPrefixMapping()D.public void startDocumentLocator()15.以下事件处理函数哪一个不是SAX实现会产生的(C)A void startDocument()B void characters(char[] ch, int start, int length)C void startElement(String uri, String localName, String qName)D void endElement(String uri, String localName, String qName)16.SAX的默认基类DefaultHandler类实现了那些接口( A )A)Attributes接口B)DTDHandler接口C)ErrorHandler接口D)ContentHandler接口17.在XML文档的第一条声明语句中,不能使用的属性是( D)A、versionB、encodingC、standaloneD、name18.不符合格式良好的XML文档要求的是( A )A、文档可以有一个以上的根元素;B、有符合规范的声明语句;C、每个元素有正确的起始、结束标记;D、元素正确嵌套,没有交叉现象出现;19.在进行属性声明时,错误的是(B)A 标记中可以使用多个属性B 属性可以出现在起始标记或结束标记中;C 属性名是大小写敏感的;D 属性值必须用引号引上;20.以下不属于XML语法规定的是(B)A、元素必须正确嵌套B、标记任意大小写C、所有的属性值必须放在双引号或单引号中;D、若文档没有DTD,属性值的默认类型是“CDA TA”;21.在XML中,下列关于DOM的叙述不正确的。
Da) DOM是独立于开发语言和平台的,因此使用Visnal Basic、Java、Visual C++等开发工具使用的DOM编程API是一致的b) XML文档通过load方法被装载进内存后,在内存中形成一个DOM文档对象模型树c) 通过DOM API,软件开发人员可以控制XML文档的结构和内容d)通过DOM在XML文档中只能按照顺序方式导航22.XML中,(B)是文档对象模型DOM中的基本对象,元素、属性、注释、处理指令等都可以认为是它。
A DocumentB NodeC NodeListD Element23.阅读下面XML文档,然后判断下列说法正确的是。
C<book><author>tom</author><bookcode>12</bookcode></book>a) <book>是元素对象,同样也是文本对象b) <author>是元素对象,同样也是文本对象c) tom是文本对象d) tom是元素对象24.<?xml version="1.0"?><!DOCTYPE customer[<!ENTITY location "jianwai street">]><customer><name>jack</name><address>&location;</address></customer>关于上述Xml文档,以下描述正确的是( B )。
a) 该Xml文档中使用了外部DTD。
b) 通过浏览器打开上述Xml文档时,字符串jianwai street代替了& location;c) 该Xml文档不是有效的XML文档。
25.以下关于XML文档的声明的语句正确的是。
DA)<xml version="1.0" encoding="UTF-8">B)<?XML version="1.0" encoding="UTF-8"?>C)<?xml Version="1.0" encoding="UTF-8"?>D)<?xml version="1.0" encoding="UTF-8"?>二、填空题1.____名称空间__________是解决XML元素多义性和名字冲突问题的方案。
2.XML元素由___开始标记__________、结束标记和两者之间的内容三部分组成。
3.DOM全称为_Document Object Model__,DOM解析采用文档驱动,SAX解析使用__事件__驱动。
4.SAX解析器是否报告XML声明给事件处理器?_____否______(填“是”或“否”)5.<?xml version="1.0" encoding="gb2312"?>是__xml声明_________。
6.属性类型设为ID,表明该属性的取值____必须唯一__________________。
三、简答题1.什么是XML?2.什么是SAX?简述SAX的工作原理。
3.SAX与DOM在解析器的核心分别是什么,他们的优缺点是什么,分别使用在处理什么问题!4.<c:choose>标签根据嵌入的子标签<c:when>决定执行哪个内容。
如果没有一个条件成立,如果有<c:otherwise>子标签,就执行其中的<c:otherwise>标签体中的内容。
<c:choose>、<c:when> 和<c:otherwise>标签可以用于实现if-else语句的功能。
<c:when>和<c:otherwise>标签只能作为<c:choose>的子标签,不能单独使用;<c:choose>标签体中必须有<c:when>标签,但可以没有<c:otherwise>标签。
如果有<c:otherwise>标签,则<c:when>标签必须在<c:otherwise>之前。
5.如果要实现Tag接口,可以通过扩展TagSupport这个类,来写自己需要的方法,而不需要把Tag接口中的所有方法实现。
6.用JAXB将XML数据转化为java对象的步骤7.Tld文件的功能及相应标签处理类的tld文件的配置四、程序填空题1.使用DOM解析XML文件代码如下,读程序完成填空。
exam2.xml代码如下:<?xml version="1.0" encoding="GB2312"?><school><student ID="s101" sex="女"><name>李华</name><age>12</age><score>92</score></student></school>exam2.java代码如下:import org.w3c.dom.*;import javax.xml.parsers.*;import java.io.*;public class ExamTest {public static void main(String args[]) throws Exception{DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();//DOM解析返回文档对象①_Document__ doc = builder.parse(new File("exam2.xml"));//获得文档根元素节点②_Element__ root = doc.getDocumentElement();//获得根节点下元素标记名为student的所有的元素节点的集合③_Nodelist_ nl = root.getElementsByTagName("student");for (int i = 0; i < nl. getLength(); i++) {//获取nl集合中的第i个节点对象Element stu = (Element)nl.item(i);//获得元素student属性的集合④_NamedNodeMap__ map = book.getAttributes();//循环输出map中所有的属性for (int k = 0; k < map.getLength(); k++) {⑤_Attr_ attrNode = (⑤_Attr_)map.item(k);System.out.print(attrNode.getName() + "="+ attrNode.getValue() + " ");}//获得student标记下所有子节点集合NodeList eNl = stu.getChildNodes();//遍历所有子节点for (int j = 0; j < eNl.getLength(); j++) {⑥_Nodelis t_ child = eNl.item(j);if (child.getNodeType() == child.ELEMENT_NODE) {Element eNode = (Element)child;}if (child.getNodeType() == child.TEXT_NODE) {⑦_Text__ tNode = (⑦_Text_)child;}} }}}2.例如jsp中要求取出request中保存的一个属性username,以前习惯的方式:<%String username=(String)request.getAttribute("user");out.println(username);%>或者<%String username=(String)request.getAttribute("user");%><%=user%>在使用jstl后,则可以直接书写为:<c:out value="${user}"/>(或者直接${user}) 或${param.[ " user " ]}。