`
ticojj
  • 浏览: 157636 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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 = True

loadStatus = objDOM.Load(xmlFile)
Set xmlParseErr = objDOM.parseError
If xmlParseErr.errorCode <> 0 Then
	status="Fail"&":"&xmlParseErr.reason&"(LineNumber:"&XmlParseErr.line&")"
else
	status="Success"
End If
	WScript.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

分享到:
评论

相关推荐

    xml 文件与xsd文件的转化以及xsd验证xml的合法性

    6. **验证转化**:完成XSD文件编写后,可以用这个XSD文件来验证XML文档是否符合定义的结构和约束。 XSD验证XML的合法性: 1. **解析XSD**:首先,解析XSD文件以获取其定义的规则。 2. **匹配元素和属性**:遍历XML...

    验证XSD和XML文件的小工具

    验证xml文件与xsd是否匹配

    XML验证器(XSD验证XML)

    3. 验证XML:使用XML文档对象的validate方法,传入XSD文档对象作为参数。 4. 处理验证结果:检查验证结果,如果返回值为真,说明XML文档有效;否则,遍历错误集合获取错误信息。 通过这样的验证器,开发者可以确保...

    xsd生成xml工具

    在IT行业中,XML(eXtensible Markup Language)是一种用于标记数据的标准格式,而XSD(XML Schema Definition)则是用于定义XML文档结构和数据类型的规范。"xsd生成xml工具"是一个实用程序,它允许开发者根据XSD...

    xml文件转xsd文件

    4. **验证XML文件**:使用XSD文件对XML文件进行验证,确保XML符合XSD定义的规则。可以使用XML解析器或者命令行工具如`xmllint`来进行验证。 5. **生成Java类**:利用JAXB或其他类似的工具,如Apache CXF的XJC,根据...

    C#验证xml是否满足xsd规则

    我们可以通过Add方法添加XSD文件,然后使用Validate方法对XML文档进行验证。 - `XmlReaderSettings`和`XmlReader`:`System.Xml.XmlReaderSettings`类允许设置验证选项,如启用或禁用验证、指定XSD集等。结合`...

    通过xsd验证xml

    在Visual Studio 2005(VS2005)中,使用C++来实现XML文档与XSD模式的验证是一个常见的需求。VS2005提供了一套强大的XML工具和库,如MSXML和ATL(Active Template Library),这些工具可以帮助开发者方便地处理XML和...

    使用jaxb根据xsd生成xml文档

    **使用JAXB根据XSD生成XML文档** ...这个过程包括创建XSD文件、生成Java类、配置JAXB绑定、创建和填充Java对象,最后使用`Marshaller`生成XML文档。了解并熟练掌握这一流程,能够极大地提高XML处理的效率和准确性。

    xsd验证xml - 含

    标题中的“xsd验证xml”指的是使用XML Schema Definition (XSD) 对XML文档进行验证的过程。在XML中,XSD是一种规范,它定义了XML文档的结构和数据类型,确保XML文档的数据符合预设的规则,从而提高数据的准确性和...

    根据XSD检查XML并修复

    附件是我写的一个demo程序,该程序的功能是根据一个定义好的XSD文件去检查指定的XML文件是否满足XSD的约束。 这里的约束比标准的约束要弱一些,比如:这里的约束不限制元素出现的顺序,只关心有没有这个元素。 我...

    XML生成XSD的方法

    为了确保XML文档遵循特定的格式和规则,通常会用到XSD(XML Schema Definition)来定义XML文档的结构。本文将详细介绍如何从现有的XML文档自动生成XSD模式文件,包括必要的工具和步骤。 #### 二、准备工作 1. **...

    java生成xsd,xml示例

    XML用于结构化数据的存储和传输,而XSD则为XML文档提供了语义验证的规则。本教程将详细介绍如何在Java环境中生成XML和XSD文件。 XML是一种标记语言,它允许我们在文档中定义元素、属性和结构。这些元素和属性描述了...

    XSD使用dom4j校验XML

    在IT行业中,XML(eXtensible Markup Language)是一种用于数据交换的标准格式,而XSD(XML Schema Definition)则是用于定义XML文档结构和数据类型的规范。DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了...

    通过xsd产生C#实体类解析XML或生成XML

    XML Schema(XSD)文件是定义XML文档结构的规范,它提供了验证XML文档有效性的规则。本教程将详细介绍如何使用XSD文件生成C#实体类,以便于解析XML数据和生成XML文档。 首先,我们需要一个XSD文件,它定义了XML文档...

    利用xsd校验xml

    在描述中提到的博文链接,虽然没有提供具体内容,通常博主可能会详细介绍如何创建一个XSD文件,如何定义XML文档的结构,并展示如何使用这个XSD文件来校验XML文档。这可能包括使用编程语言(如Java、C#)中的库函数,...

    使用SAXParser(SAXParserFactory.newInstance())验证XML文件格式---XSD

    为了确保XML文档遵循特定的结构和规则,我们可以使用XML Schema Definition (XSD) 文件来定义和验证XML文档的结构。本篇文章将深入探讨如何使用Java中的SAXParser和SAXParserFactory类来验证XML文件是否符合指定的...

    Xsd转换xml

    为了确保XML文档遵循一定的规则,我们使用XSD来创建一个模式,这个模式描述了XML文档应该如何构建,包括元素、属性、数据类型以及它们之间的关系。一旦有了XSD,我们就可以根据这个模式验证XML文档,确保其符合规范...

    纯Java(swing)写的xsd验证xml - 含

    标题中的“纯Java(swing)写的xsd验证xml”是指使用Java编程语言,结合Swing图形用户界面库,开发的一个工具,用于验证XML文档是否符合指定的XSD(XML Schema Definition)规范。XML Schema是W3C推荐的一种XML文档...

    XSD根据xml生成schema文件

    6. **验证XML文档**:生成XSD文件后,可以将其与XML文档一起使用,通过XML解析器进行验证。如果XML文档符合XSD定义的规则,那么解析器会返回成功,否则会报告错误。 在实际应用中,XSD不仅可以帮助我们验证XML文档...

    C#使用xsd文件验证XML格式是否正确的实现方法

    在C#编程中,验证XML文件的格式是否符合预定义的模式是非常重要的,这可以通过使用XSD(XML Schema Definition)文件来实现。XSD文件定义了一组规则,用于描述XML文档的结构和数据类型,从而确保XML数据的有效性和...

Global site tag (gtag.js) - Google Analytics