如何使用正则表达式进行xml数据验证

这篇文章主要介绍如何使用正则表达式进行xml数据验证,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

xml Schema是定义XML的数据定义文件,以.xsd作为文件的扩展名。它也以被用来定义一类XML文件。

如何使用正则表达式进行xml数据验证

通常,一些特殊含义的数据不能通过系统预设的数据结构(类型)清楚地描述。XML Schema 规范中声明:可以通过facet来限制(restriction)简单类型,从而产生一些新的原子类型(Atomic types)。Facet有pattern, enumeration,等等;这里要说的是其中非常有用的一项是: pattern+ 正则表达式语言(regular exPRession language)结合正则表达式的强大功能,就可以进行一些复杂的数据结构的描述

Examples可以通过xmlspy, xmlwrite,或js/vbs 等进行验证,下面举出了js验证的例子(需要msxml4.0支持)

有关定义 XML Schema 的信息,可以在W3C 的 XML Schema 规范的第一部分中找到。有关内置数据类型及其可用的局限性方面的信息,请检 查 XML Schema 规范的第二部分。关于 这两部分 XML Schema 规范的简易摘要,请查看 W3C Primer on XML Schema。

有关正则表达式,可以去http://www.regexlib.com/看看

examples:

/***examples.xml***/
<?xmlversion="1.0"encoding="gb2312"?>
<rootxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="examples.xsd">
<user>
<name>test</name>
<email>moonpiazza@hotmail.com</email>
<ip>127.0.0.1</ip>
<color>#000000</color>
</user>
<user>
<name>guest</name>
<email>guest@371.net</email>
<ip>202.102.224.25</ip>
<color>#FFFFFF</color>
</user>
</root>


/***examples.xsd***/
<?xmlversion="1.0"encoding="gb2312"?>
<xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:elementname="root"type="Root"/>

<xsd:complexTypename="Root">
<xsd:sequence>
<xsd:elementname="user"type="User"minOccurs="0"maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexTypename="User">
<xsd:sequence>
<xsd:elementname="name"type="xsd:string"/>
<xsd:elementname="email"type="Email"/>
<xsd:elementname="ip"type="IP"/>
<xsd:elementname="color"type="Color"/>
</xsd:sequence>
</xsd:complexType>

<xsd:simpleTypename="Email">
<xsd:restrictionbase="xsd:string">
<xsd:patternvalue="([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleTypename="IP">
<xsd:restrictionbase="xsd:string">
<xsd:patternvalue="(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.
(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.
(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleTypename="Color">
<xsd:restrictionbase="xsd:string">
<xsd:patternvalue="#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?"/>
</xsd:restriction>
</xsd:simpleType>

</xsd:schema>


/***examples.htm***/
<SCRIPTLANGUAGE="javaScript">
functionvalidate()
{
varoXML;
varnParseError;
varsReturnVal;

oXML=newActiveXObject("MSXML2.DOMDocument.4.0");
oXML.async=false;
oXML.validateOnParse=true;

oXML.load("examples.xml");

nParseError=oXML.parseError.errorCode;
sReturnVal="";

if(0!=nParseError)
{
//参看书籍教程中parseError对象属性
sReturnVal=sReturnVal+"代码:"+oXML.parseError.errorCode+"\n";
sReturnVal=sReturnVal+"错误原因:"+oXML.parseError.Reason+"\n";
sReturnVal=sReturnVal+"错误字符串:"+oXML.parseError.srcText+"\n";
sReturnVal=sReturnVal+"错误行号"+oXML.parseError.line+"\n";
sReturnVal=sReturnVal+"错误列数:"+oXML.parseError.linepos+"\n";
}
else
{
sReturnVal=sReturnVal+"验证通过!"
}

alert(sReturnVal);
}

functionwindow.onload()
{
validate();
}
</SCRIPT>

以上是“如何使用正则表达式进行xml数据验证”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-03-13 15:40:20
收藏
分享
海报
0 条评论
169
上一篇:Bootstrap中Blazor组件有什么用 下一篇:如何使用XML文件记录操作日志
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码