使用schema校验xml

    xiaoxiao2021-12-14  18

    一、背景  在大型的项目开发中,我们往往要是用xml进行一些规范化的处理。这时候就需要有高手先做好上层的一些规则。这时候往往就会用到schema对xml进行一个规范化的校验  二、代码实践  我们以公司和员工为例来实践一下。  1、创建公司校验schema:CompanySchema.xsd  Xml代码  <?xml version="1.0" encoding="UTF-8"?>   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"            targetNamespace="http://www.example.org/company"            xmlns:tns="http://www.example.org/company">        <xsd:element name="emp" type="tns:empType"/>       <xsd:complexType name="empType">           <xsd:sequence>               <xsd:element name="empName" type="xsd:string"/>               <xsd:element name="empId" type="tns:empIdType"/>               <xsd:element name="sex" type="tns:sexType"/>               <xsd:element name="age" type="tns:ageType" />               <xsd:element name="email" type="tns:emailType"/>           </xsd:sequence>       </xsd:complexType>       <xsd:simpleType name="empIdType">           <xsd:restriction base="xsd:int">               <xsd:minInclusive value="1" />               <xsd:maxExclusive value="100000" />           </xsd:restriction>       </xsd:simpleType>          <xsd:simpleType name="sexType">           <xsd:restriction base="xsd:string">               <xsd:enumeration value="男" />               <xsd:enumeration value="女" />           </xsd:restriction>       </xsd:simpleType>          <xsd:simpleType name="ageType">           <xsd:restriction base="xsd:int">               <xsd:minInclusive value="1" />               <xsd:maxExclusive value="120" />           </xsd:restriction>       </xsd:simpleType>          <xsd:simpleType name="emailType">           <xsd:restriction base="xsd:string">               <xsd:pattern value="(\w+\.*)*\w+@\w+\.[A-Za-z]{2,6}" />               <xsd:minLength value="6" />               <xsd:maxLength value="255" />           </xsd:restriction>       </xsd:simpleType>      </xsd:schema>   2、创建员工校验schema:EmpSchema.xsd  Xml代码  <?xml version="1.0" encoding="UTF-8"?>   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"            targetNamespace="http://www.example.org/company"            xmlns:tns="http://www.example.org/company">        <xsd:element name="emp" type="tns:empType"/>       <xsd:complexType name="empType">           <xsd:sequence>               <xsd:element name="empName" type="xsd:string"/>               <xsd:element name="empId" type="tns:empIdType"/>               <xsd:element name="sex" type="tns:sexType"/>               <xsd:element name="age" type="tns:ageType" />               <xsd:element name="email" type="tns:emailType"/>           </xsd:sequence>       </xsd:complexType>       <xsd:simpleType name="empIdType">           <xsd:restriction base="xsd:int">               <xsd:minInclusive value="1" />               <xsd:maxExclusive value="100000" />           </xsd:restriction>       </xsd:simpleType>          <xsd:simpleType name="sexType">           <xsd:restriction base="xsd:string">               <xsd:enumeration value="男" />               <xsd:enumeration value="女" />           </xsd:restriction>       </xsd:simpleType>          <xsd:simpleType name="ageType">           <xsd:restriction base="xsd:int">               <xsd:minInclusive value="1" />               <xsd:maxExclusive value="120" />           </xsd:restriction>       </xsd:simpleType>          <xsd:simpleType name="emailType">           <xsd:restriction base="xsd:string">               <xsd:pattern value="(\w+\.*)*\w+@\w+\.[A-Za-z]{2,6}" />               <xsd:minLength value="6" />               <xsd:maxLength value="255" />           </xsd:restriction>       </xsd:simpleType>      </xsd:schema>   3、创建公司xml:Company.xml  Xml代码  <?xml version="1.0" encoding="UTF-8"?>   <Company xmlns="http://www.example.org/company" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.example.org/company">          <companyName>中国实业集团</companyName>       <comppanyAddress>北京市朝阳区呼家楼</comppanyAddress>       <companyEmail>gxsenjoy@163.com</companyEmail>       <emp>           <empName>王刚</empName>           <empId>12345</empId>           <sex></sex>           <age>100</age>           <email>wanggang@sino.com</email>       </emp>       <emp>           <empName>瓜瓜</empName>           <empId>100</empId>           <sex></sex>           <age>100</age>           <email>guagua@sino.com</email>       </emp>   </Company>   4、注意点  要将EmpSchema.xsd,CompanySchema.xsd的命名空间定义成一样的 
    转载请注明原文地址: https://ju.6miu.com/read-964326.html

    最新回复(0)