XmlSchemaDatatype.ParseValue 方法

定义

重载

ParseValue(String, XmlNameTable, IXmlNamespaceResolver)

当在派生类中重写时,根据内置或用户定义的简单类型验证指定的 string

ParseValue(String, XmlNameTable, XmlNamespaceManager)

在派生类中重写时,根据内置或用户定义的简单类型验证指定的字符串。

ParseValue(String, XmlNameTable, IXmlNamespaceResolver)

当在派生类中重写时,根据内置或用户定义的简单类型验证指定的 string

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

参数

s
String

要根据简单类型验证的 string

nameTable
XmlNameTable

如果 XmlNameTable 对象表示 xs:NCName 类型,在分析 string 时用于原子化的 XmlSchemaDatatype

nsmgr
IXmlNamespaceResolver

如果 IXmlNamespaceResolver 对象表示 xs:QName 类型,在分析 string 时使用的 XmlSchemaDatatype 对象。

返回

Object

Object,它可以被安全地强制转换为由 ValueType 属性返回的类型。

例外

输入值不是该 W3C XML 架构类型的有效实例。

要分析的值不可以为 null

示例

以下示例从 example.xsd 文件中检索LotteryNumber简单类型作为一个XmlSchemaSimpleType,然后验证string使用ParseValue该方法的值5

#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

以下 XML 文件用于前面的代码示例。

<?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>

注解

该方法 ParseValue 根据内置或用户定义的简单类型验证 string 指定的类型。 例如,如果表示 XmlSchemaDatatype xs:date 类型,则返回实例 DateTime

以下是在方法验证过程中执行 ParseValue 的步骤。

  1. 将指定的 string 值转换为其相应的公共语言运行时 (CLR) 类型。

  2. 验证该值是否不违反为简单类型定义的任何方面。

然后,转换后的值作为一个 Object 值返回,并且可以安全地强制转换为属性返回 ValueType 的类型。

XmlSchemaDatatype当对象表示列表类型时,输入string值将转换为一个或多个对象的列表。 XmlSchemaDatatype当对象表示列表类型时,将尝试将输入值分析为联合的成员类型。 如果分析尝试失败,则尝试使用联合的下一个成员进行转换,直到分析成功或没有其他要分析的成员类型。 如果分析失败,则会引发异常。

适用于

ParseValue(String, XmlNameTable, XmlNamespaceManager)

在派生类中重写时,根据内置或用户定义的简单类型验证指定的字符串。

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

参数

s
String

要根据简单类型验证的字符串。

nameTable
XmlNameTable

分析字符串时用于原子化的 XmlNameTable(如果 XmlSchemaDatatype 对象表示 xs:NCName 类型)。

nsmgr
XmlNamespaceManager

如果 XmlSchemaDatatype 对象表示 xs:QName 类型,在分析字符串时使用 XmlNamespaceManager 对象。

返回

Object

Object,它可以安全地强制转换为由 ValueType 属性返回的类型。

例外

输入值不是该 W3C XML 架构类型的有效实例。

要分析的值不能为 NULL(在 Visual Basic 中为 Nothing)。

注解

该方法 ParseValue 根据内置或用户定义的简单类型验证指定的字符串。 例如,如果表示 XmlSchemaDatatype xs:date 类型,则返回实例 DateTime

以下是在方法验证过程中执行 ParseValue 的步骤。

  1. 将指定的字符串转换为其相应的公共语言运行时 (CLR) 类型。

  2. 验证该值是否不违反为简单类型定义的任何方面。

然后,转换后的值作为一个 Object 值返回,并可以安全地强制转换为属性返回 ValueType 的类型。

XmlSchemaDatatype当对象表示列表类型时,输入字符串值将转换为一个或多个对象的列表。 XmlSchemaDatatype当对象表示列表类型时,将尝试将输入值分析为联合的成员类型。 如果分析尝试失败,则尝试使用联合的下一个成员进行转换,直到分析成功或没有其他要分析的成员类型。 如果分析失败,则会引发异常。

适用于