xml复习

来源:互联网 发布:linux 防火墙 编辑:程序博客网 时间:2024/06/01 08:03

只是为了考试

期末复习提纲

一、考试题型介绍

1.选择题(20分)

2.填空题(10分)

3.简答题(20分)

4.程序填空题(20分)

5.编程题(30分)

 

二、复习重点

1.xml文档的结构以及XML文档的组成部分

答:一个XML文档大体可以分为三个区域:序言区、主体区、尾声区(可选)

XML文档的起始部分,包含文档的相关信息:版本信息、编码信息文档独立性信息等(处理指令)

由一个或多个元素组成层次数,只能包含唯一根元素

尾声区可选:包含注释、处理指令等

 

2.文档对象模型

答:DOM是用于 XML文档的与平台和语言无关的编程接口

DOM 定义如何操作和访问 XML文档

要通过 DOM访问 XML文档,需要以下两个组件:1XML解析器2DOM实现

DOM 创建的节点树 XML 文件的内容的逻辑表示

 

简单说,DOM是一组独立于语言和平台的应用程序编程接口,它能够描述如何访问和操纵存储在XMLHTML文档中的信息。

 

 

 

 

删除节点

 

3.Xpath语言

答:XPath是一种在XSL中采用的,用来定位XML文档部分内容的语言

 

4.为什么引入命名空间,有哪些优缺点

和其它语言里面的命名空间一样,都是用来避免名称冲突的。这样重名的元素或属性可以用不同的命名空间来区分开来,有了命名空间区分后相同标签名可以不会被错误解析

 

 

5.DTD定义XmL有哪些局限性

①语法结构问题:DTD的语法与XML语法不一样,使用DOMXPathXSLT等技术无法处理它,为自动化文档处理带来困难;

②数据类型问题: DTD的数据类型有限,也不能自由扩充不利于在XML数据交换场合验证数据类型。

③文档结构问题:DTD中,所有元素、属性都是全局的,无法声明仅与上下文位置相关的元素或属性

④名称空间问题:DTD中没有名称空间的概念,不直接支持名称空间

 

6.DTDSchema有哪些区别,Schema的优势?

 

 

6.你在项目中经常使用的xml技术有哪些?如何实现的?

 

 

 

7.根据Schema视图和xml文档,会写出Schema文档

 

 

 

8.四大解析器如何解析和创建xml文档,重点jdomdom4j

http://blog.csdn.net/jack_wong2010/article/details/8292647

 

jdom

* 类描述:Jdom读取XML文件  

public class JdomRead {

 

       publicvoid parseXml(File xmlFile) throwsException {

              //在内存中建立一个saxbuilder文档模型

              SAXBuildersaxBuilder=new SAXBuilder();

              //根据xmlFile文件创建文档

              Documentdoc=saxBuilder.build(xmlFile);

              //获得文档根元素

              Elementroot=doc.getRootElement();

              System.out.println("文档根元素是:"+root.getName());

              //获得根元素的所有子元素

              List<Element>childList = root.getChildren();

              for(int i = 0; i < childList.size(); i++) {

                     Elementelement=childList.get(i);

                     System.out.println(""+(i+1)+"个孩子节点是:"+element.getName());

              }

             

              //获得第2个孩子的节点

              System.out.println("2个孩子节点的属性名和值start。。。");

              ElementsecondChild=childList.get(1);

              //获得第2个孩子节点的属性,并迭代遍历输出属性的名称,值和类型

              List<Attribute>attrs=secondChild.getAttributes();

             

              for(int i = 0; i < attrs.size(); i++) {

                     Attributeattr=attrs.get(i);

                     //属性名称

                     System.out.println("属性名称:"+attr.getName());

                     //属性值

                     System.out.println("属性值:"+attr.getValue());

                     //属性类型

                     System.out.println("属性类型:"+attr.getAttributeType());

              }

              System.out.println("2个孩子节点的属性名和值end。。。");

              //如果第2个元素包含有子元素,继续迭代输出

              List<Element>sonElements=secondChild.getChildren();

              for(int i = 0; i < sonElements.size(); i++) {

                     Elementele=sonElements.get(i);

                     System.out.println("2个孩子的第"+(i+1)+"个子元素的名和值开始。。。");

                     System.out.println("子元素名:"+ele.getName());

                     System.out.println("子元素值:"+ele.getValue());

                     System.out.println("2个孩子的第"+(i+1)+"个子元素的名和值结束。。。");

              }

              //如果第2个元素的子元素也有属性,继续获得属性迭代输出,略。。。

       }

       publicstatic void main(String[] args) throws Exception {

 

              JdomReadjRead=new JdomRead();

              jRead.parseXml(newFile("src/student.xml"));

       }

 

}

* 类描述:Jdom创建XML文件  

public class JdomWrite {

       publicvoid bulidXml() throws Exception {

              //根元素及属性

              Elementroot = new Element("学生名册");

              root.setAttribute("学校名称", "广州大学华软软件学院");

              Elementstudent = new Element("学生");

              student.setAttribute("年级", "12");

              student.setAttribute("学号", "12012345");

              Elementname =new Element("姓名");

              name.setText("张三");

              //性别

              Elementsex = new Element("性别");

              sex.setText("");

              //年龄

              Elementage= new Element("年龄");

              age.setText("21");

              //生日

              Elementbirthday= new Element("生日");

              birthday.setText("1991-01-01");

             

              //生成文档对象,并将根元素置入文档中

              Documentdoc=new Document(root);

              //依次添加其它元素

              student.addContent(name);

              student.addContent(sex);

              student.addContent(age);

              student.addContent(birthday);

             

              root.addContent(student);

             

              //定义格式化输出对象,格式化xml文档

              Formatformat= Format.getPrettyFormat();//有三种方式选择

              //定义缩进字符串,字符编码集

              format.setIndent("  ");

              format.setEncoding("utf-8");

              //创建xml输出器

             XMLOutputter outputter=newXMLOutputter(format);

              //执行输出

              outputter.output(doc,new FileWriter("src/student.xml"));

       }

       /**

        * main(这里用一句话描述这个方法的作用)

        * (这里描述这个方法适用条件可选)

        */

       publicstatic void main(String[] args) throws Exception {

              System.out.println("开始生成xml文档。。。");

              JdomWritejw=new JdomWrite();

              jw.bulidXml();

              System.out.println("xml文档生成结束。。。");

             

       }

}

 

 

Dom4j

* 类描述:使用dom4j遍历xml文档  

 

public class Dom4jRead {

       publicstatic void main(String[] args) throws Exception {

              //step1:获取解析器

              SAXReadersaxReader=new SAXReader();

              //step2:获取文档对象

              Documentdoc=saxReader.read(new File("src/student1_dom4j.xml"));

              //step3:获取文档根元素

              Elementroot=doc.getRootElement();

              //step4:递归解析文档子元素

              parseElements(root);   

       }

 

       //定义静态方法递归解析子元素

       publicstatic void parseElements(Element element){

              //step1:处理当前元素包含的所有属性

              parseAttribute(element);

              //step2:获取当前元素包含的所有子元素

              ListeleList=element.elements();

              //step3:遍历每个子元素

              for(Object e : eleList) {

                     Elementelement2=(Element)e;

                     //如果该元素的内容不只是包含字符串

                     if(!element2.isTextOnly()) {

                            //递归解析

                            parseElements(element2);

                     }else{

                            //处理当前元素的全部属性

                            parseAttribute(element2);

                            //获取当前元素的内容

                            System.out.println(element2.getQName().getName()+"-->"+element2.getText());

                     }

              }

             

       }

       //定义静态方法解析元素所有属性

       publicstatic void parseAttribute(Element element) {

              //step1:获取当前元素的所有属性

              Listattrs=element.attributes();

              //step2:遍历元素的每个属性

              for(Object att : attrs) {

                     Attributeattribute=(Attribute)att;

                     //获取每个元素的属性名称和属性值

                     System.out.println(element.getQName().getName()+"元素的"

                                  +attribute.getQName().getName()+"属性值为"+attribute.getValue());

              }

       }     

}

* 类描述:使用dom4j创建xml文档   

public class Dom4jWrite {

       publicstatic void main(String[] args) throws Exception {

 

              //创建文档并设置文档的根元素:第一种方式

//          Documentdocument=DocumentHelper.createDocument();

//          Elementroot= DocumentHelper.createElement("学生名册");

//          document.setRootElement(root);

             

              //创建文档并设置文档的根元素:第二种方式

              Elementroot=DocumentHelper.createElement("学生名册");

              Documentdocument=DocumentHelper.createDocument(root);

              //根元素设置属性

              root.addAttribute("学校", "广州大学华软软件学院");

              //为根元素添加子元素

              ElementstuElement=root.addElement("学生");

              //为子元素设置属性

              stuElement.addAttribute("年级", "13").addAttribute("学号", "13098765");

              //为子元素添加子元素

              ElementnameElement=stuElement.addElement("姓名");

              //设置子元素内容

              nameElement.setText("仙人");

              ElementsexeElement=stuElement.addElement("性别");

              sexeElement.setText("");

              ElementageElement=stuElement.addElement("年龄");

              ageElement.setText("18");

              ElementbirElement=stuElement.addElement("生日");

              birElement.setText("2018-08-08");

              //定义输出流,输出文档,限于内存中

              XMLWriterxmlWriter=new XMLWriter();

              xmlWriter.write(document);

              //指定文档输出格式

              OutputFormatformat=new OutputFormat("  ",true);

              //把文档输出到存储设备,硬盘:第一种方式

              XMLWriterxmlWriter2=new XMLWriter(newFileOutputStream("src/student1_dom4j.xml"),format);

              xmlWriter2.write(document);

              //把文档输出到存储设备,硬盘:第二种方式

              XMLWriterxmlWriter3=new XMLWriter(new FileWriter("src/student2_dom4j.xml"),format);

              xmlWriter3.write(document);

              //必须进行刷新和关闭,否则写入内容为空

              xmlWriter3.flush();

              //xmlWriter3.close();

       }

}

 

 

9.xml和数据库之间的相互转换

 

 

10.json构建和解析

 

0 0
原创粉丝点击