XmlSchemaDatatype.ParseValue 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| 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
在解析 時string,如果這個XmlSchemaDatatype物件代表 xs:NCName 類型,則使用 the XmlNameTable to 用於原子化。
- nsmgr
- IXmlNamespaceResolver
IXmlNamespaceResolver解析時該物件stringXmlSchemaDatatype是否代表 xs:QName 類型。
傳回
一個 Object 可以安全地鑄造成物業退還的 ValueType 類型。
例外狀況
輸入值並非此 W3C XML 架構類型的有效實例。
解析的值不可能是 null。
範例
以下範例從 LotteryNumber example.xsd 檔案XmlSchemaSimpleType中取得簡單型別,並驗證string使用該ParseValue方法的5值。
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值轉換為其對應的通用語言執行時(CLR)類型。確認該值沒有違反簡單型別定義的任何面向。
轉換後的值會以 a 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 Not)。
備註
此 ParseValue 方法會根據內建或使用者定義的簡單型別驗證指定的字串。 例如,若此代表 XmlSchemaDatatype 型別 xs:date,則會回傳 的 DateTime 實例。
以下是方法驗證過程中執行 ParseValue 的步驟。
將指定的字串轉換為對應的通用語言執行時(CLR)型別。
確認該值沒有違反簡單型別定義的任何面向。
轉換後的值會以 回 Object 傳,並可安全地鑄造為屬性回傳 ValueType 的類型。
當物件 XmlSchemaDatatype 代表一個清單類型時,輸入字串值會轉換成一個或多個物件的清單。 當物件 XmlSchemaDatatype 代表一個清單型態時,會嘗試將輸入值解析為聯集的成員型別。 若解析失敗,則由下一個成員嘗試轉換,直到解析成功或無其他成員類型可解析為止。 若解析失敗,則拋出例外。