xml

一、什么是XML

它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。
XML 全称为可扩展的标记语言。主要用于描述数据和用作配置文件。

二、XML 文档在逻辑上主要由5 个部分组成

1、XML 声明

指明所用 XML 的版本、文档的编码、文档的独立性信息

2、文档类型声明

指出 XML 文档所用的 DTD

3、元素

由开始标签、元素内容和结束标签构成

4、注释

以结束,用于对文档中的内容起一个说明作用

5、处理指令

通过处理指令来通知其他应用程序来处理非 XML 格式的数据
XML 文档的根元素被称为文档元素,它和在其外部出现的处理指令、注释等作为文档实体的子节点,根元素本身和其内部的子元素也是一棵树。

三、XML样例



      
            大都督
            18
      
      
            大都督2
            19
      

作用

xml文件头部要写的话,说明了xml的版本和编码,utf-8一般是网络传输用的编码

四、XML解析方式

Dom4j、Sax、Pull

五、Dom4j与Sax区别

dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml,也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性,所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j。

六、使用dom4j解析xml

解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作,因此获取Document对象是第一步,大体说来,有三种方式:

1.自己创建Document对象
Document document = DocumentHelper.createDocument();
Element root = document.addElement("users");

其中users是根节点,可以继续添加其他节点等操作。

2.自己创建Document对象
// 创建SAXReader对象
SAXReader reader = new SAXReader();
// 读取文件 转换成Document
Document document = reader.read(new File("XXXX.xml"));
3.读取XML文本内容获取Document对象
String xmlStr = "......";
Document document = DocumentHelper.parseText(xmlStr);

七、解析xml代码

1、Xml配置:


      
            大都督
            18
      
      
            大都督2
            19
      


2、Java代码
      @Test
      public void testXml2() throws DocumentException {
            SAXReader saxReader = new SAXReader();
            Document read = saxReader.read(new  File("F:/lee/project/demo/src/test/java/com/example/demo/xml/user.xml"));
            // 获取根节点
            Element rootElement = read.getRootElement();
            getNodes(rootElement);
      }

      private void getNodes(Element rootElement) {
            System.out.println("当前节点名称:" + rootElement.getName());
            // 获取属性ID
            List attributes = rootElement.attributes();
            for (Attribute attribute : attributes) {
                  System.out.println("属性:" + attribute.getName() +  "---" + attribute.getText());
            }
            if (!rootElement.getTextTrim().equals("")) {
                  System.out.println(rootElement.getName() + "--" +  rootElement.getText());
            }
            // 使用迭代器遍历
            Iterator elementIterator =  rootElement.elementIterator();
            while (elementIterator.hasNext()) {
                  Element next = elementIterator.next();
                  getNodes(next);
            }
      }

运行结果:
xml_第1张图片
注意:
this.getClass().getClassLoader().getResourceAsStream(xmlPath) 获取当前项目路径xmlfsfs

八、XML与JSON区别-

Xml是重量级数据交换格式,占宽带比较大。
JSON是轻量级交换格式,xml占宽带小。
所有很多互联网公司都会使用json作为数据交换格式
很多银行项目,大多数还是在使用xml。

你可能感兴趣的:(面试题,xml,Java面试题)