XmlSchemaDatatype.ParseValue 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
ParseValue(String, XmlNameTable, IXmlNamespaceResolver) |
在衍生類別中覆寫時,對內建或使用者定義的簡單型別驗證指定的 |
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 型別,則為 XmlSchemaDatatype,用於剖析 string
時的原子化。
- nsmgr
- IXmlNamespaceResolver
如果這個 IXmlNamespaceResolver 物件表示 xs:QName 型別,則為剖析 string
時要使用的 XmlSchemaDatatype 物件。
傳回
Object,可安全地轉換為 ValueType 屬性傳回的型別。
例外狀況
輸入值不是這個 W3C XML 結構描述型別的有效執行個體。
要剖析的值不能是 null
。
範例
下列範例會從 example.xsd 檔案擷取 LotteryNumber
簡單類型做為 , XmlSchemaSimpleType 然後使用 方法驗證 string
的值 5
ParseValue 。
#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 執行的步驟。
將指定的
string
值轉換為其對應的 Common Language Runtime (CLR) 類型。確認值未違反針對簡單類型所定義的任何 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 執行的步驟。
將指定的字串轉換成其對應的 Common Language Runtime (CLR) 類型。
確認值不會違反針對簡單類型所定義的任何 Facet。
轉換的值接著會傳回為 Object ,而且可以安全地轉換成 屬性所傳回的類型 ValueType 。
XmlSchemaDatatype當 物件代表清單類型時,輸入字串值會轉換成一或多個 物件的清單。 XmlSchemaDatatype當 物件代表清單類型時,會嘗試將輸入值剖析為聯集的成員類型。 如果剖析嘗試失敗,則會嘗試使用等位的下一個成員進行轉換,直到剖析成功或沒有其他要剖析的成員類型為止。 如果剖析失敗,則會擲回例外狀況。