本文主要是介绍VB Script 如何使用XSD验证XML文档格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
XSD (XML Schema Definition) 文件用于定义XML文件的格式,通过XSD文件来验证XML文档格式是否符合定义中的规范,可以发现并指出XML文档中的错误。 我发现网络上介绍VB Script读取XML文档的文章很多,但是很难找到使用XSD文件验证XML Schema的文章。我这里介绍一个我写的例子。
有XML文件,定义了author.xml:
<?xml version="1.0" encoding="utf-8"?> <Authors xmlns="ns-authors"><Author name="Bill" gender="male"><Book category="science">computer programming</Book><Book category="science">C++ Programming</Book></Author><Author name="Lily" gender="female"><Book category="cooking">Sichuan Cuisine</Book><Book category="travel">Travel in Britain</Book></Author> </Authors>
Schema文件author.xsd:
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="ns-authors"targetNamespace ="ns-authors"elementFormDefault="qualified"><xs:element name="Authors" ><xs:complexType><xs:sequence minOccurs="1" maxOccurs="unbounded"><xs:element name="Author"><xs:complexType><xs:sequence minOccurs="1" maxOccurs="unbounded"><xs:element name="Book"><xs:complexType><xs:simpleContent><xs:extension base="xs:string"><xs:attribute name="category" type="xs:string" use ="optional"/></xs:extension></xs:simpleContent></xs:complexType></xs:element></xs:sequence><xs:attribute name="name" type="xs:string" use ="required"/><xs:attribute name="gender" use="optional"><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="male|female"/></xs:restriction></xs:simpleType></xs:attribute></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element> </xs:schema>
XMLValidation.vbs
xmlFile=WScript.Arguments(0) xsdFile=WScript.Arguments(1)Dim objDOM, objSchema, loadStatus, xmlParseErr Set objDOM = CreateObject("MSXML2.DOMDocument.6.0") Set objSchema = CreateObject("MSXML2.XMLSchemaCache.6.0")objSchema.add "ns-authors", xsdFile objDom.schemas = objSchema objDOM.async = False objDOM.validateOnParse = True objDOM.resolveExternals = TrueloadStatus = objDOM.Load(xmlFile) Set xmlParseErr = objDOM.parseError If xmlParseErr.errorCode <> 0 Thenstatus="Fail"&":"&xmlParseErr.reason&"(LineNumber:"&XmlParseErr.line&")" elsestatus="Success" End IfWScript.Echo status
可以用下面的命令使用VS调试运行这个脚本:
CScript /nologo /X XMLReader.vbs Author.xml Author.xsd
简单分析一下脚本:
1, objDOM是实现IXMLDOMDocument3接口的对象
2, objSchema是实现IXMLDOMSchemaCollection2接口的对象
3, 第8行:objSchema.add "ns-authors", xsdFile. 第一个参数是XML使用的命名空间,即XML和XSD文件根节点中定义的xmlns="ns-authors"。如果不使用命名空间,在XML和XSD文件中将该命名空间删除,该参数需传递空字符串;第二个参数为XSD文件路径
4, 第14行loadStatus = objDOM.Load(xmlFile) 载入一个xmlFile文档到DOM对象,如果XML文档正确且符合Schema,则loadStatus=True,否则loadStatus=False
5, xmlParseErr为实现IXMLDOMParseError2接口的对象,其中最重要的3个属性值:
errorCode:错误码
reason:解析错误的原因
line:错误所在行.
通过reason和line我们可以轻松定位XML验证的问题。
Binhua Liu原创,装载请注明出处http://www.cnblogs.com/Binhua-Liu
这篇关于VB Script 如何使用XSD验证XML文档格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!