zoukankan      html  css  js  c++  java
  • XML面试题

    1.       xml是什么?

    xml提供一种描述结构化数据的方法,是一种简单,与平台无关并被广泛采用的标准,xml文档可以承载各种信息.

    2.       XML用来干什么?你说了解的xml技术及其应用?

    保存配置,站与站之间的交流,都用得到它.

    Xml不仅可以用来描述数据,还可以作为数据的载体.

    1.用xml分离数据,数据单独放在xml中,集中精力更好的完成html的数据显示和布局,方便维护.

             2.xml可以作为商业系统之间交换金融信息所使用的语言.

             3.交换数据,用xml可以减少交换数据的复杂性.

             4.xml可以用来共享数据.因为xml无关于硬件和软件.

             5.xml可以充分的利用数据.

             6.可以用于创建新语言,xml是WML语言的母亲,WML无线标记语言,用于标识运行于手持设备上的internet程序.

    3.xml和html的区别?

             1.设计上的区别,xml用来存储数据,重在数据本身,HTML用来定义数据,重在数据的显示模式.

             2.xml可扩展性强,因为他本身就是可扩展性标记语言,可创建个性化的标记语言,提供更多数据操作

              3.xml语法比HTML严格.

    1.起始标签和结束标签要匹配,

    2.嵌套标签不能互相嵌套.

    3.区分大小写.

    4.xml属性值必须放在引号中,html可有可无.

    5.xml必须有相应的值,但html可以有不带值的属性名.

    1、xml有哪些解析技术?区别是什么?

    答:有DOM,SAX,STAX等

    DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问

    STAX:Streaming APIfor XML (StAX)

    讲解这些区别是不需要特别去比较,就像说传智播客与其他培训机构的区别时,我们只需说清楚传智播客有什么特点和优点就行了,这就已经间接回答了彼此的区别。

    2、你在项目中用到了xml技术的哪些方面?如何实现的?

    答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。

    3、用jdom解析xml文件时如何解决中文问题?如何解析?

    答:看如下代码,用编码方式加以解决
    package test;
    import java.io.*;
    public class DOMTest
    {
    private String inFile = "c:\\people.xml"
    private String outFile = "c:\\people.xml"
    public static void main(String args[])
    {
    new DOMTest();
    }
    public DOMTest()
    {
    try
    {
    javax.xml.parsers.DocumentBuilder builder =

    javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
    org.w3c.dom.Document doc = builder.newDocument();
    org.w3c.dom.Element root = doc.createElement("老师");
    org.w3c.dom.Element wang = doc.createElement("王");
    org.w3c.dom.Element liu = doc.createElement("刘");
    wang.appendChild(doc.createTextNode("我是王老师"));
    root.appendChild(wang);
    doc.appendChild(root);
    javax.xml.transform.Transformer transformer =
    javax.xml.transform.TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING,"gb2312");
    transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT,"yes");

    transformer.transform(newjavax.xml.transform.dom.DOMSource(doc),
    new

    javax.xml.transform.stream.StreamResult(outFile));
    }
    catch (Exception e)
    {
    System.out.println (e.getMessage());
    }
    }
    }

    4、编程用JAVA解析XML的方式.

    答:用SAX方式解析XML,XML文件如下:

    <?xmlversion=1.0 encoding=gb2312?>

    <person>

    <name>王小明</name>

    <college>信息学院</college>

    <telephone>6258113</telephone>

    <notes>男,1955年生,博士,95年调入海南大学</notes>

    </person>

    事件回调类SAXHandler.java

    import java.io.*;

    importjava.util.Hashtable;

    importorg.xml.sax.*;

    public classSAXHandler extends HandlerBase

    {

    private Hashtabletable = new Hashtable();

    private StringcurrentElement = null;

    private StringcurrentValue = null;

    public voidsetTable(Hashtable table)

    {

    this.table =table;

    }

    public HashtablegetTable()

    {

    return table;

    }

    public voidstartElement(String tag, AttributeList attrs)

    throwsSAXException

    {

    currentElement =tag;

    }

    public voidcharacters(char[] ch, int start, int length)

    throwsSAXException

    {

    currentValue = newString(ch, start, length);

    }

    public voidendElement(String name) throws SAXException

    {

    if(currentElement.equals(name))

    table.put(currentElement,currentValue);

    }

    }

    JSP内容显示源码,SaxXml.jsp:

    <HTML>

    <HEAD>

    <TITLE>剖析XML文件people.xml</TITLE>

    </HEAD>

    <BODY>

    <%@ pageerrorPage=ErrPage.jsp

    contentType=text/html;charset=GB2312%>

    <%@ pageimport=java.io.* %>

    <%@ pageimport=java.util.Hashtable %>

    <%@ pageimport=org.w3c.dom.* %>

    <%@ pageimport=org.xml.sax.* %>

    <%@ pageimport=javax.xml.parsers.SAXParserFactory %>

    <%@ pageimport=javax.xml.parsers.SAXParser %>

    <%@ pageimport=SAXHandler %>

    <%

    File file = newFile(c:\people.xml);

    FileReader reader= new FileReader(file);

    Parser parser;

    SAXParserFactoryspf = SAXParserFactory.newInstance();

    SAXParser sp =spf.newSAXParser();

    SAXHandler handler= new SAXHandler();

    sp.parse(newInputSource(reader), handler);

    HashtablehashTable = handler.getTable();

    out.println(<TABLEBORDER=2><CAPTION>教师信息表</CAPTION>);

    out.println(<TR><TD>姓名</TD> + <TD> +

    (String)hashTable.get(newString(name)) + </TD></TR>);

    out.println(<TR><TD>学院</TD> + <TD> +

    (String)hashTable.get(newString(college))+</TD></TR>);

    out.println(<TR><TD>电话</TD> + <TD> +

    (String)hashTable.get(newString(telephone)) + </TD></TR>);

    out.println(<TR><TD>备注</TD> + <TD> +

    (String)hashTable.get(newString(notes)) + </TD></TR>);

    out.println(</TABLE>);

    %>

    </BODY>

    </HTML>

    70、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?

    a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等

       DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问

    SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问

       STAX:Streaming API for XML (StAX)

  • 相关阅读:
    剑指 Offer——13. 调整数组顺序使奇数位于偶数前面
    剑指 Offer——3. 从尾到头打印链表
    剑指 Offer——2. 替换空格
    剑指 Offer——1. 二维数组中的查找
    LeetCode 905. Sort Array By Parity 按奇偶校验排列数组
    LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素
    SSH 代码笔记
    anaconda3安装caffe
    opencv多版本安装
    人脸文章与数据库
  • 原文地址:https://www.cnblogs.com/gxpblogs/p/3068866.html
Copyright © 2011-2022 走看看