TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Salil
NA
3
0
DataSet Xml Schema validation does not work
Mar 24 2010 9:46 PM
Hi,
I am trying to validate the XML that I read into a DataSet using an XML schema (xsd). However, even though the xml file is invalid, I don't get any invalid xml exception. When I print the DataSet contents, it just skips the invalid entry, which is an element named "EmailAddress". In XML schema, the element name is "Email".
I tried setting EnforceConstraints field of the dataset before reading the XML. But I think it is not related with Schema. It does not change the behavior.
Here is my code:
[code]
using System;
using System.IO;
using System.Data;
using System.Xml;
using System.Xml.Schema;
namespace Trial
{
public class Program
{
static public void Main(String[] args)
{
var myDs = new DataSet();
myDs.ReadXmlSchema("../../AddressBook.xsd");
myDs.ReadXml("../../AddressBook.xml");
myDs.AcceptChanges();
myDs.WriteXml(Console.Out);
foreach (DataTable table in myDs.Tables)
{
Console.WriteLine("Table {0} ==>", table.TableName);
foreach (DataColumn column in table.Columns)
{
Console.WriteLine("Column {0}", column.ColumnName);
}
}
}
}
}
[/code]
Here are my xml and xsd files
[code]
<?xml version="1.0"?>
<!-- 06-xml/05-schema -->
<AddressBook>
<AddressBookEntry>
<Name>
<First>Niel</First>
<Middle>M</Middle>
<Last>Bornstein</Last>
</Name>
<Telephone Type="mobile">
<CountryCode>1</CountryCode>
<AreaCode>404</AreaCode>
<Exchange>784</Exchange>
<Number>0696</Number>
</Telephone>
<EmailAddress>
[email protected]
</EmailAddress>
</AddressBookEntry>
<AddressBookEntry>
<Name>
<First>Edd</First>
<Last>Dumbill</Last>
</Name>
<EmailAddress>
[email protected]
</EmailAddress>
</AddressBookEntry>
</AddressBook>
[/code]
[code]
<?xml version="1.0"?>
<!-- 06-xml/05-schema -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Name">
<xs:complexType>
<xs:all>
<xs:element name="First" type="xs:string" minOccurs="0" />
<xs:element name="Middle" type="xs:string" minOccurs="0" />
<xs:element name="Last" type="xs:string" minOccurs="0" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="Telephone">
<xs:complexType>
<xs:sequence>
<xs:element name="CountryCode" type="xs:string" />
<xs:element name="AreaCode" type="xs:string" minOccurs="0" />
<xs:element name="Exchange" type="xs:string" minOccurs="0" />
<xs:element name="Number" type="xs:string" minOccurs="1"/>
</xs:sequence>
<xs:attribute name="Type" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Email" type="xs:string" />
<xs:element name="AddressBookEntry">
<xs:complexType>
<xs:sequence>
<xs:element ref="Name" />
<xs:element ref="Telephone" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="Email" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AddressBook">
<xs:complexType>
<xs:sequence>
<xs:element ref="AddressBookEntry" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
[/code]
Reply
Answers (
4
)
C# Region clip to a rectangle?
adding a project and accesing the form.. or network bandwidth monitr