[SoapUI]怎样运用Schema通过*.xsd文件来验证response对应的xml文件

添加Groovy Script脚本对Test Step进行验证

脚本如下(已经运行通过):

import javax.xml.XMLConstants
import javax.xml.transform.stream.StreamSource
import javax.xml.validation.SchemaFactory

//Load the XSD from a file
def xsd = new File(‘D:\\DOAutomationTest\\Automation_Test_DO_IpadForAdvisor_SoapUI\\Schemas\\schema_Clients.xsd‘).text
log.info "xsd = "+xsd

//Get the XML from the response
def response = testRunner.testCase.testSteps["testStepName"].testRequest.response.contentAsString
log.info "response = "+response

def factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
def schema = factory.newSchema(new StreamSource(new StringReader(xsd)))
def validator = schema.newValidator()

try
{
validator.validate(new StreamSource(new StringReader(response)))
}
catch( Exception )
{
assert false
}

 一个启发我的Sample(也可以运行成功):

class XmlExamples {
  static def CAR_RECORDS = ‘‘‘
    <records>
      <car name=‘HSV Maloo‘ make=‘Holden‘ year=‘2006‘>
        <country>Australia</country>
        <record type=‘speed‘>Production Pickup Truck with speed of 271kph</record>
      </car>
      <car name=‘P50‘ make=‘Peel‘ year=‘1962‘>
        <country>Isle of Man</country>
        <record type=‘size‘>Smallest Street-Legal Car at 99cm wide and 59 kg in weight</record>
      </car>
      <car name=‘Royale‘ make=‘Bugatti‘ year=‘1931‘>
        <country>France</country>
        <record type=‘price‘>Most Valuable Car at $15 million</record>
      </car>
    </records>
  ‘‘‘
}

def xsd = ‘‘‘
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="records">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="car"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="car">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="country"/>
        <xs:element ref="record"/>
      </xs:sequence>
      <xs:attribute name="make" use="required" type="xs:NCName"/>
      <xs:attribute name="name" use="required"/>
      <xs:attribute name="year" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="country" type="xs:string"/>
  <xs:element name="record">
    <xs:complexType mixed="true">
      <xs:attribute name="type" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
‘‘‘.trim()

import javax.xml.XMLConstants
import javax.xml.transform.stream.StreamSource
import javax.xml.validation.SchemaFactory

def factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
def schema = factory.newSchema(new StreamSource(new StringReader(xsd)))
def validator = schema.newValidator()
validator.validate(new StreamSource(new StringReader(XmlExamples.CAR_RECORDS)))

  

时间: 2024-08-30 16:26:26

[SoapUI]怎样运用Schema通过*.xsd文件来验证response对应的xml文件的相关文章

Dom4j 读取一个XML文件和将String写成XML文件

dom4j保存文件xml格式和读取XML文件内容,代码如下: package com.qmjs.imut import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.DocumentHelper; i

C#-XML文件提取字符串+字符串存为XML文件+创建XML(自定义节点)文件+读取节点内容

一.将字符串写入xml文件(并保存) 写入: XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml("xmlstring"); 保存: xdoc.Save("pathsave.xml") 二.将xml文件赋值到字符串 读取xml文件: XmlDocument xdoc = new XmlDocument(); xdoc.Load("pathload.xml"); 返回字符串: xdoc.InnerX

【C++】【TinyXml】xml文件的读写功能使用——写xml文件

TinyXml工具是常用比较简单的C++中xml读写的工具 需要加载 #include "TinyXml\tinyxml.h" 在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlBase:整个TinyXML模型的基类. TiXmlAttribute:对应于XML中的元素的属性. TiXmlNode:对应于DOM结构中的节点. TiXmlComment:对应于XML中的注释 TiXmlDeclaration:对应于XML中的申明部分,即<?versiong=&qu

javaxml文件基础:Dom怎么生成xml文件

package CreateXmlByDom; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Result; import javax.xml.transfo

Spring Batch 简单应用 (三)(XML文件操作)

前篇关于Spring Batch的文章,讲述了Spring Batch 对CSV文件的读写操作. 本文将通过一个完整的实例,与大家一起讨论运用Spring Batch对XML文件的读写操作.实例流程是从一个XML文件中读取商品信息,经过简单的处理,写入另外一个XML文件中. 工程结构如下图: log4j.xml是log处理的配置文件,与本文没有必然联系,再此不做论述. application.xml文件内容如下: 按 Ctrl+C 复制代码 <?xml version="1.0"

(转)通过 XML Catalog 实现 XML 文件的自动化实时校验

引言 XML Catalog 实现了根据 XSD 实时校验 XML 文件的功能.用户不用编写程序,通过少量的配置就可以在编辑 XML 文件的时候得到及时的反馈(需要在 XML 编辑器进行文件的编写),实现了实时的校验. 然而在实际应用中,由于环境的不同以及 XML 文件本身的不同,手动方式的配置并不能满足需求.比如,作者在实践中发现,在开发环境里手动配置的 XML Catalog 是不能保存在运行环境的.而且,许多实际的 XML 的编写方式并没有采用标准的格式,这也给 XML Catalog 的

springbatch操作XML文件

一.需求分析 使用Spring Batch对XML文件进行读写操作: 从一个xml文件中读取商品信息, 经过简单的处理, 写入另外一个xml文件中. 二.代码实现 1. 代码结构图: 2. applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

hibernate.hbm.xml文件配置入门小结(1)

在Hibernate中,各表的映射文件xxx.hbm.xml可以通过工具生成,例如在使用MyEclipse开发时,它提供了自动生成映射文件的工具. hibernate.hbm.xml文件的基本结构如下: [html] view plain copy print? 1   <?xml version="1.0" encoding='UTF-8'?> 2 3   <!DOCTYPE hibernate-mapping PUBLIC 4        "-//Hi

mybatis,Spring等工具对xml文件正确性的验证

我们知道mybatis或者spring都是使用xml文件作为配置文件,配置文件的格式都是定义在叫做.dtd或者.xsd文件中的,当工具在解析用户自己定义的xml文件的时候,如何才能知道用户自定义的文件是否正确的呢?我们不能在xml文件中乱写一些框架不认识的标签,比如在spring的xml文件中写如下<user>标签,毫无疑问会报错.那么框架是怎么来验证我们所写的标签是否正确的呢? <user> <id>100</id> </user> 由于myb