共用方式為


XmlSchemaDatatype.ParseValue 方法

定義

多載

ParseValue(String, XmlNameTable, IXmlNamespaceResolver)

在衍生類別中覆寫時,對內建或使用者定義的簡單型別驗證指定的 string

ParseValue(String, XmlNameTable, XmlNamespaceManager)

在衍生類別中覆寫時,對內建或使用者定義的簡單類型驗證指定的字串。

ParseValue(String, XmlNameTable, IXmlNamespaceResolver)

來源:
XmlSchemaDataType.cs
來源:
XmlSchemaDataType.cs
來源:
XmlSchemaDataType.cs

在衍生類別中覆寫時,對內建或使用者定義的簡單型別驗證指定的 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 型別,則為 XmlSchemaDatatype,用於剖析 string 時的原子化。

nsmgr
IXmlNamespaceResolver

如果這個 IXmlNamespaceResolver 物件表示 xs:QName 型別,則為剖析 string 時要使用的 XmlSchemaDatatype 物件。

傳回

Object,可安全地轉換為 ValueType 屬性傳回的型別。

例外狀況

輸入值不是這個 W3C XML 結構描述型別的有效執行個體。

要剖析的值不能是 null

範例

下列範例會從 example.xsd 檔案擷取 LotteryNumber 簡單類型做為 , XmlSchemaSimpleType 然後使用 方法驗證 string 的值 5ParseValue

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

備註

方法 ParseValuestring 根據內建或使用者定義的簡單型別來驗證指定的 。 例如,如果這 XmlSchemaDatatype 代表 xs:date 類型,則會傳回 的 DateTime 實例。

以下是在方法的驗證程式期間 ParseValue 執行的步驟。

  1. 將指定的 string 值轉換為其對應的 Common Language Runtime (CLR) 類型。

  2. 確認值未違反針對簡單類型所定義的任何 Facet。

轉換的值接著會傳回為 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

如果這個 XmlSchemaDatatype 物件表示 xs:NCName 類型,則 XmlNameTable 用於剖析字串時的原子化。

nsmgr
XmlNamespaceManager

如果這個 XmlSchemaDatatype 物件表示 xs:QName 類型,則為剖析字串時要使用的 XmlNamespaceManager 物件。

傳回

Object,可安全地轉型為 ValueType 屬性傳回的型別。

例外狀況

輸入值不是這個 W3C XML 結構描述型別的有效執行個體。

要剖析的值不可為 Null (在 Visual Basic 中為 Nothing)。

備註

方法 ParseValue 會根據內建或使用者定義的簡單型別來驗證指定的字串。 例如,如果這 XmlSchemaDatatype 代表 xs:date 類型,則會傳回 的 DateTime 實例。

以下是在方法的驗證程式期間 ParseValue 執行的步驟。

  1. 將指定的字串轉換成其對應的 Common Language Runtime (CLR) 類型。

  2. 確認值不會違反針對簡單類型所定義的任何 Facet。

轉換的值接著會傳回為 Object ,而且可以安全地轉換成 屬性所傳回的類型 ValueType

XmlSchemaDatatype當 物件代表清單類型時,輸入字串值會轉換成一或多個 物件的清單。 XmlSchemaDatatype當 物件代表清單類型時,會嘗試將輸入值剖析為聯集的成員類型。 如果剖析嘗試失敗,則會嘗試使用等位的下一個成員進行轉換,直到剖析成功或沒有其他要剖析的成員類型為止。 如果剖析失敗,則會擲回例外狀況。

適用於