Hi
I need to validate the structure of an xml file against a xsd file. I have this code so far...
This is my xml file....
And my xsd file...
So if I change the artnr element in my xml file from "artnr" to "artnr2" then I want that to raise an error, so I can take proper action. Lets say alert the user that this xml file is not valid. But I must be doing something wrong here beacuse even if I do that I don't see any errors.
Regards
I need to validate the structure of an xml file against a xsd file. I have this code so far...
VB.NET:
[SIZE=2][COLOR=#0000ff]Private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][SIZE=2] ValidateXml2([/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] FileName [/SIZE][SIZE=2][COLOR=#0000ff]As [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]String[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] FileSchema [/SIZE][SIZE=2][COLOR=#0000ff]As [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]String[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2]builder = [/SIZE][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][SIZE=2] StringBuilder[/SIZE]
[SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][SIZE=2] productSettings [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] XmlReaderSettings = [/SIZE][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][SIZE=2] XmlReaderSettings()[/SIZE]
[SIZE=2]productSettings.Schemas.Add([/SIZE][SIZE=2][COLOR=#800000]"generic"[/COLOR][/SIZE][SIZE=2], FileSchema)[/SIZE]
[SIZE=2]productSettings.ValidationType = ValidationType.Schema[/SIZE]
[SIZE=2][COLOR=#0000ff]AddHandler[/COLOR][/SIZE][SIZE=2] productSettings.ValidationEventHandler, [/SIZE][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][SIZE=2] ValidationEventHandler([/SIZE][SIZE=2][COLOR=#0000ff]Address Of[/COLOR][/SIZE][SIZE=2] productSettingsValidationEventHandler)[/SIZE]
[SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][SIZE=2] books [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] XmlReader = XmlReader.Create(FileName, productSettings)[/SIZE]
[SIZE=2][COLOR=#0000ff]While[/COLOR][/SIZE][SIZE=2] books.Read()[/SIZE]
[SIZE=2][COLOR=#0000ff]End [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]While[/COLOR][/SIZE]
[SIZE=2]MsgBox(builder.ToString)[/SIZE]
[SIZE=2][COLOR=#0000ff]End [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][SIZE=2] productSettingsValidationEventHandler([/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] sender [/SIZE][SIZE=2][COLOR=#0000ff]As [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Object[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] e [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] ValidationEventArgs)[/SIZE]
[SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][SIZE=2] e.Severity = XmlSeverityType.Warning [/SIZE][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE]
[SIZE=2]builder.Append([/SIZE][SIZE=2][COLOR=#800000]"WARNING: " & vbCrlf[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2]builder.Append(e.Message & vbCrlf)[/SIZE]
[SIZE=2][COLOR=#0000ff]ElseIf[/COLOR][/SIZE][SIZE=2] e.Severity = XmlSeverityType.Error [/SIZE][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE]
[SIZE=2]builder.Append([/SIZE][SIZE=2][COLOR=#800000]"ERROR: " & vbCrlf[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2]builder.Append(e.Message & vbCrlf)[/SIZE]
[SIZE=2][COLOR=#0000ff]End [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]End [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE]
This is my xml file....
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<artnr>String</artnr>
<namn>String</namn>
<namn_old>String</namn_old>
<sortering>String</sortering>
<design>String</design>
<beskrivning>String</beskrivning>
<stav>String</stav>
<stav_under>String</stav_under>
<collection>String</collection>
<color>String</color>
<dimension>String</dimension>
<logo>String</logo>
<bild>String</bild>
<textrad>String</textrad>
<langd>String</langd>
<bredd>String</bredd>
<tjocklek>String</tjocklek>
<yta>String</yta>
<antal>String</antal>
<ytaforpackning>String</ytaforpackning>
<vikt>String</vikt>
<symbol1>String</symbol1>
<symbol2>String</symbol2>
<symbol3>String</symbol3>
<symbol4>String</symbol4>
<symbol5>String</symbol5>
<symbol5>String</symbol5>
<symbol6>String</symbol6>
</product>
</products>
And my xsd file...
HTML:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="generic" elementFormDefault="qualified" targetNamespace="generic">
<xsd:element name="products">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="product">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="artnr" type="xsd:string"/>
<xsd:element name="namn" type="xsd:string"/>
<xsd:element name="namn_old" type="xsd:string"/>
<xsd:element name="sortering" type="xsd:string"/>
<xsd:element name="design" type="xsd:string"/>
<xsd:element name="beskrivning" type="xsd:string"/>
<xsd:element name="stav" type="xsd:string"/>
<xsd:element name="stav_under" type="xsd:string"/>
<xsd:element name="collection" type="xsd:string"/>
<xsd:element name="color" type="xsd:string"/>
<xsd:element name="dimension" type="xsd:string"/>
<xsd:element name="logo" type="xsd:string"/>
<xsd:element name="bild" type="xsd:string"/>
<xsd:element name="textrad" type="xsd:string"/>
<xsd:element name="langd" type="xsd:string"/>
<xsd:element name="bredd" type="xsd:string"/>
<xsd:element name="tjocklek" type="xsd:string"/>
<xsd:element name="yta" type="xsd:string"/>
<xsd:element name="antal" type="xsd:string"/>
<xsd:element name="ytaforpackning" type="xsd:string"/>
<xsd:element name="vikt" type="xsd:string"/>
<xsd:element name="symbol1" type="xsd:string"/>
<xsd:element name="symbol2" type="xsd:string"/>
<xsd:element name="symbol3" type="xsd:string"/>
<xsd:element name="symbol4" type="xsd:string"/>
<xsd:element name="symbol5" type="xsd:string"/>
<xsd:element name="symbol5" type="xsd:string"/>
<xsd:element name="symbol6" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
So if I change the artnr element in my xml file from "artnr" to "artnr2" then I want that to raise an error, so I can take proper action. Lets say alert the user that this xml file is not valid. But I must be doing something wrong here beacuse even if I do that I don't see any errors.
Regards
Last edited by a moderator: