使用xsd,让你的config文件更健壮

xml在Asp.net中应用得非常之多,很多时候,我们自己还需要加入新的配置文件,对于新的配置文件,如果我们使用xsd对xml进行约束的话,会让整个配置文件更容易排错,也更有利于程序的健壮性。

最主要!!

实现起来非常简单。
下面简述过程。
【第一步】
首先我们先写一个最简的情况的xml,不在于是否真的和实际情况相符,但是要体现出各种可能性。

<?xml version="1.0" encoding="utf-8" ?>
<accessValidator redirectLocation="http://www.baidu.com"
			 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			 xsi:schemaLocation="http://www.mywebsite.com/Website">
    <validator name="ReferrerValidator" type="ResourceService.Core.Validator.UrlReferrerValidator">
        <!-- ReferrerValidator使用的参数,不同的地址请用|间隔,例如localhost|127.0.0.1 -->
        <param key="UrlReferrer" value="localhost,*.0.0.1"/>
    </validator>

    <validator name="HttpMethodValidator" type="ResourceService.Core.Validator.HttpMethodValidator">
        <!-- HttpMethodValidator使用的参数,不同的地址请用,间隔,例如HEAD,GET -->
        <param key="HttpMethod" value="HEAD,GET"/>
        <param key="param1" value="param2"/>
    </validator>

</accessValidator>

【第二步】
既然用Asp.net,IDE应该是Visual Studio。我这里使用的是VS2010。
当我们光标在该config文档中时,菜单栏会出现XML的选项。点击它,选中Create Schema,他会自动生成AccessValidator.xsd,只是这里要注意的是,他是在操作系统的temp文件夹中产生的。你为了使用还需要将其放到与config文件相同的目录下。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="accessValidator">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="validator">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="param">
                                <xs:complexType>
                                    <xs:attribute name="key" type="xs:string" use="required" />
                                    <xs:attribute name="value" type="xs:string" use="required" />
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string" use="required" />
                        <xs:attribute name="type" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="redirectLocation" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
</xs:schema>

上面就是对应的xsd的文件。这里注意,因为我们的config中的validator和param节点都是会为复数个的,所以,此处的的xs:element会有maxoccurs,如果你原来的config文件只有一个validator或一个param那么,在xsd对应的xs:element中是不会有这个项的(此时会被限制为只能出现一个),这个就是我前面说的“要考虑进一切可能性”。
【第三步】
现在有了config文件,又有了xsd文件,我们剩下要做的就是关联这两个文件。因为,我们已经两者放到同一目录下了,所以此处,我们只需要将config文件的头部改为如下即可

<accessValidator redirectLocation="http://www.baidu.com"
			 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			 xsi:schemaLocation="http://www.mywebsite.com/Website
			 AccessValidator.xsd">

注意最后一行!对这样添加就行。

现在两者就关联上了,我们xsd会自动对该xml进行验证了,当然还有智能提示。





 » 订阅本站:RSS订阅

发表评论

您也可以使用微博账号登陆

无觅相关文章插件,快速提升流量