XmlSchemaDatatype.ParseValue Method

Definition

Overloads

ParseValue(String, XmlNameTable, IXmlNamespaceResolver)

When overridden in a derived class, validates the string specified against a built-in or user-defined simple type.

ParseValue(String, XmlNameTable, XmlNamespaceManager)

When overridden in a derived class, validates the specified string against a built-in or user-defined simple type.

ParseValue(String, XmlNameTable, IXmlNamespaceResolver)

When overridden in a derived class, validates the string specified against a built-in or user-defined simple type.

public:
 abstract System::Object ^ ParseValue(System::String ^ s, System::Xml::XmlNameTable ^ nameTable, System::Xml::IXmlNamespaceResolver ^ nsmgr);
public abstract object ParseValue (string s, System.Xml.XmlNameTable? nameTable, System.Xml.IXmlNamespaceResolver? nsmgr);
public abstract object ParseValue (string s, System.Xml.XmlNameTable nameTable, System.Xml.IXmlNamespaceResolver nsmgr);
abstract member ParseValue : string * System.Xml.XmlNameTable * System.Xml.IXmlNamespaceResolver -> obj
Public MustOverride Function ParseValue (s As String, nameTable As XmlNameTable, nsmgr As IXmlNamespaceResolver) As Object

Parameters

s
String

The string to validate against the simple type.

nameTable
XmlNameTable

The XmlNameTable to use for atomization while parsing the string if this XmlSchemaDatatype object represents the xs:NCName type.

nsmgr
IXmlNamespaceResolver

The IXmlNamespaceResolver object to use while parsing the string if this XmlSchemaDatatype object represents the xs:QName type.

Returns

An Object that can be cast safely to the type returned by the ValueType property.

Exceptions

The input value is not a valid instance of this W3C XML Schema type.

The value to parse cannot be null.

Examples

The following example retrieves the LotteryNumber simple type from the example.xsd file as an XmlSchemaSimpleType and then validates the string value of 5 using the ParseValue method.

#using <mscorlib.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;

class XmlSchemaExamples
{
public:

    static void Main()
    {
        XmlTextReader^ xtr = gcnew XmlTextReader("example.xsd");
        XmlSchema^ schema = XmlSchema::Read(xtr, gcnew ValidationEventHandler(ValidationCallbackOne));

        XmlSchemaSet^ schemaSet = gcnew XmlSchemaSet();
        schemaSet->ValidationEventHandler += gcnew ValidationEventHandler(ValidationCallbackOne);
        schemaSet->Add(schema);
        schemaSet->Compile();

        XmlSchema^ compiledSchema;

        for each (XmlSchema^ schema1 in schemaSet->Schemas())
        {
            compiledSchema = schema1;
        }

        for each (XmlSchemaObject^ schemaObject in compiledSchema->Items)
        {
            if (schemaObject->GetType() == XmlSchemaSimpleType::typeid)
            {
                XmlSchemaSimpleType^ simpleType = dynamic_cast<XmlSchemaSimpleType^>(schemaObject);
                Console::WriteLine("{0} {1}", simpleType->Name, simpleType->Datatype->ValueType);
            }
            if (schemaObject->GetType() == XmlSchemaComplexType::typeid)
            {
                XmlSchemaComplexType^ complexType = dynamic_cast<XmlSchemaComplexType^>(schemaObject);
                Console::WriteLine("{0} {1}", complexType->Name, complexType->Datatype->ValueType);
            }
        }
        xtr->Close();
    }

    static void ValidationCallbackOne(Object^ sender, ValidationEventArgs^ args)
    {
        Console::WriteLine(args->Message);
    }
};

int main()
{
    XmlSchemaExamples::Main();
    return 0;
};
using System;
using System.Xml;
using System.Xml.Schema;

class XMLSchemaExamples
{
    public static void Main()
    {
        XmlTextReader xtr = new XmlTextReader("example.xsd");
        XmlSchema schema = XmlSchema.Read(xtr, new ValidationEventHandler(ValidationCallbackOne));

        XmlSchemaSet schemaSet = new XmlSchemaSet();
        schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne);
        schemaSet.Add(schema);
        schemaSet.Compile();

        XmlSchema compiledSchema = null;

        foreach (XmlSchema schema1 in schemaSet.Schemas())
        {
            compiledSchema = schema1;
        }

        foreach (XmlSchemaObject schemaObject in compiledSchema.Items)
        {
            if (schemaObject.GetType() == typeof(XmlSchemaSimpleType))
            {
                XmlSchemaSimpleType simpleType = (XmlSchemaSimpleType)schemaObject;
                Console.WriteLine("{0} {1}", simpleType.Name, simpleType.Datatype.ValueType);
            }
            if (schemaObject.GetType() == typeof(XmlSchemaComplexType))
            {
                XmlSchemaComplexType complexType = (XmlSchemaComplexType)schemaObject;
                Console.WriteLine("{0} {1}", complexType.Name, complexType.Datatype.ValueType);
            }
        }
        xtr.Close();
    }

    public static void ValidationCallbackOne(object sender, ValidationEventArgs args)
    {
        Console.WriteLine(args.Message);
    }
}
Imports System.Xml
Imports System.Xml.Schema

 _

Class XMLSchemaExamples

    Public Shared Sub Main()
        Dim xtr As New XmlTextReader("example.xsd")
        Dim schema As XmlSchema = XmlSchema.Read(xtr, New ValidationEventHandler(AddressOf ValidationCallbackOne))

        Dim schemaSet As New XmlSchemaSet()
        AddHandler schemaSet.ValidationEventHandler, AddressOf ValidationCallbackOne

        schemaSet.Add(schema)
        schemaSet.Compile()

        Dim compiledSchema As XmlSchema = Nothing

        For Each schema1 As XmlSchema In schemaSet.Schemas()
            compiledSchema = schema1
        Next

        Dim schemaObject As XmlSchemaObject
        For Each schemaObject In compiledSchema.Items
            If schemaObject.GetType() Is GetType(XmlSchemaSimpleType) Then
                Dim simpleType As XmlSchemaSimpleType = CType(schemaObject, XmlSchemaSimpleType)
                Console.WriteLine("{0} {1}", simpleType.Name, simpleType.Datatype.ValueType)
            End If
            If schemaObject.GetType() Is GetType(XmlSchemaComplexType) Then
                Dim complexType As XmlSchemaComplexType = CType(schemaObject, XmlSchemaComplexType)
                Console.WriteLine("{0} {1}", complexType.Name, complexType.Datatype.ValueType)
            End If
        Next schemaObject
        xtr.Close()
    End Sub


    Public Shared Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As ValidationEventArgs)
        Console.WriteLine(args.Message)
    End Sub
End Class

The following XML file is used for the preceding code example.

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:simpleType name="LotteryNumber">
        <xs:restriction base="xs:int">
            <xs:minInclusive value="1"/>
            <xs:maxInclusive value="99"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

Remarks

The ParseValue method validates the string specified against a built-in or user-defined simple type. For example, if this XmlSchemaDatatype represents the type xs:date, then an instance of DateTime is returned.

The following are the steps performed during the ParseValue method's validation process.

  1. Convert the value specified as a string to its corresponding Common Language Runtime (CLR) type.

  2. Verify that the value does not violate any facets defined for the simple type.

The converted value is then returned as an Object and can be cast safely to the type returned by the ValueType property.

When the XmlSchemaDatatype object represents a list type, the input string value is converted to a list of one or more objects. When the XmlSchemaDatatype object represents a list type, an attempt is made to parse the input value as a member type of the union. If the parse attempt fails, then the conversion is attempted with the next member of the union until the parse is successful or there are no other member types to parse. If the parse is unsuccessful, an exception is thrown.

Applies to

ParseValue(String, XmlNameTable, XmlNamespaceManager)

When overridden in a derived class, validates the specified string against a built-in or user-defined simple type.

public:
 abstract System::Object ^ ParseValue(System::String ^ s, System::Xml::XmlNameTable ^ nameTable, System::Xml::XmlNamespaceManager ^ nsmgr);
public abstract object ParseValue (string s, System.Xml.XmlNameTable nameTable, System.Xml.XmlNamespaceManager nsmgr);
abstract member ParseValue : string * System.Xml.XmlNameTable * System.Xml.XmlNamespaceManager -> obj
Public MustOverride Function ParseValue (s As String, nameTable As XmlNameTable, nsmgr As XmlNamespaceManager) As Object

Parameters

s
String

The string to validate against the simple type.

nameTable
XmlNameTable

The XmlNameTable to use for atomization while parsing the string if this XmlSchemaDatatype object represents the xs:NCName type.

nsmgr
XmlNamespaceManager

The XmlNamespaceManager object to use while parsing the string if this XmlSchemaDatatype object represents the xs:QName type.

Returns

An Object that can be safely cast to the type that is returned by the ValueType property.

Exceptions

The input value is not a valid instance of this W3C XML Schema type.

The value to parse cannot be null (Nothing in Visual Basic).

Remarks

The ParseValue method validates the specified string against a built-in or user-defined simple type. For example, if this XmlSchemaDatatype represents the type xs:date, then an instance of DateTime is returned.

The following are the steps performed during the ParseValue method's validation process.

  1. Convert the specified string to its corresponding Common Language Runtime (CLR) type.

  2. Verify that the value does not violate any facets that are defined for the simple type.

The converted value is then returned as an Object and can be cast safely to the type that is returned by the ValueType property.

When the XmlSchemaDatatype object represents a list type, the input string value is converted to a list of one or more objects. When the XmlSchemaDatatype object represents a list type, an attempt is made to parse the input value as a member type of the union. If the parse attempt fails, then the conversion is attempted with the next member of the union until the parse is successful or there are no other member types to parse. If the parse is unsuccessful, an exception is thrown.

Applies to