<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:task="http://www.springframework.org/schema/task"
      xsi:schemaLocation="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"

sping的配置文件中节本上都会有上面的一些配置信息

第一行:说明这是一个xml文档,任何格式良好的xml文档都必须第一行是xml的声明,必须使用xml解析器解析。

第二行

beans : 标签,是xml文件的根节点

xmlns :是XML NameSpace的缩写,因为xml文件的标签名称都是自己定义的,别人和自己的很有可能重复但是功能不一样,所以要加上一个namespace加以区分,类似于java中package

xmlns:xsi :全称 xml schema instance ,是指这个xml文件遵循指定的xml规范。是指用到的schema资源文件里定义的元素约定的规范,即 .xsd 文件里的元素定义的遵守什么样的规范

xsi:schemaLocation : 都是成对出现的,第一个值表示命名空间(是指用到的文档里遵循的xml规范),第二个值表示描述该名称空间的模式文档的具体位置,两者用空格隔开,schemaLocation 属性用来引用(schema)模式文档,解析器可以在需要的情况(一般是项目启动时)下使用这个文档对 XML 实例文档进行校验。

 

举例

定义了 xmlns : aa = "url1" 和 xmlns : bb = "url2"

那么使用如下:

<aa:table xmlns : aa = "url1" >
      <aa:name>张三</aa:name>
      <aa:age>13</aa:age>
</aa:table>
<bb:table xmlns : bb = "url2" >
     <bb:name>李四</bb:name>
    <bb:age>14</bb:age>
</bb:table>

两者使用 xmlns : 前缀 来定义,那么xml解析器就不会报错。

 

xmlns和 xmlns:前缀 有什么区别?

答:xmlns 使用的是默认的命名空间,例如上图中的xmlns="http://www.springframework.org/schema/beans"

     xmlns:前缀 表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。

一般在项目启动的时候会根据spring的配置文件中的 xsd文件进行校验,默认会去依赖的包的目录下寻找对应的xsd文档来进行校验,当找不到在spring配置文件中的xsd文档,那么就会访问网络资源进行校验。

所以,在spring的配置文件中的xsd文档最好不要写版本号,它会默认的去寻找当前依赖的jar包的版本的xsd文件。

eg:

不指定版本号 http://www.springframework.org/schema/task/spring-task.xsd

指定版本号http://www.springframework.org/schema/task/spring-task-4.1.xsd

如果你的服务器是私网的也就是不能访问网络资源,那么你依赖的jar包的版本还不是 4.1,那么在项目启动时候,无法在本地找到4.1.xsd文档,只能去访问网络资源,此时是访问不了网络的,那么就会报错

springboot 封装xml报文_springboot 封装xml报文