Spring中怎么自定义xsd文件操作

发布时间:2021-06-18 18:09:23 作者:Leah
来源:亿速云 阅读:265

今天就跟大家聊聊有关Spring中怎么自定义xsd文件操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1 设置html文件的语法格式xsd文件

根据POJO的属性编写xsd文件。

例如

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.zhangyh.com/schema/user"
        elementFormDefault="qualified">

    <element name="user">
        <complexType>
            <attribute name="id" type="string" />
            <attribute name="name" type="string" />
            <attribute name="email" type="string" />
        </complexType>
    </element>
</schema>

对应的POJO是

public class User {
    private String name;
    private String email;
		
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

属性的getter和setter方法不可缺少

可以使得User的属性在xml中可以配置,如

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mytest="http://www.zhangyh.com/schema/user"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            classpath:com.zhangyh.xsd/schema/spring-beans-2.0.xsd
            http://www.zhangyh.com/schema/user
            http://www.zhangyh.com/schema/user.xsd">

    <mytest:user id="testBean"  name="aaa" email="bbb"/>

</beans>

mytest:是自定义的命名空间名 classpath:是本地xsd文件加载协议

2 实现BeanDefinitionParser接口和扩展类NamespaceHandlerSupport

扩展NamespaceHandlerSupport类:实现XML中的数据的手动加载到BeanDefinitionBuilder中

public class UserBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {

    protected Class getBeanClass(Element element){
        return User.class;
    }
    protected void doParse(Element element, BeanDefinitionBuilder bean) {
        String userName = element.getAttribute("name");
        String email = element.getAttribute("email");

        if(StringUtils.hasText(userName)) {
            bean.addPropertyValue("name", userName);
        }

        if (StringUtils.hasText(email)) {
            bean.addPropertyValue("email", email);
        }
    }
}

实现BeanDefinitionParser接口:手动注册POJO的手动解析结果

public class MyNamespaceHandler extends NamespaceHandlerSupport {
    public void init() {
        registerBeanDefinitionParser("user",new UserBeanDefinitionParser());
    }
}

3 设置Spring.handlers和Spring.schemas文件

配置META-INF/Spring.handlers:

http\://www.zhangyh.com/schema/user=com.zhangyh.xsd.paser.MyNamespaceHandler

当引用http://www.zhangyh.com/schema/user时会使用MyNamespaceHandler解析引用对象

配置META-INF/Spring.schemas

http\://www.zhangyh.com/schema/user.xsd=com.zhangyh.xsd/schema/user.xsd

载入自定义xsd文件

看完上述内容,你们对Spring中怎么自定义xsd文件操作有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. dubbo.xsd的配置
  2. dtd与xsd去区别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring

上一篇:Netty中怎么整合WebSocket

下一篇:python清洗文件中数据的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》