本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

XmlSchemaSet 類別

 

包含 XML 結構描述定義語言 (XSD) 結構描述的快取。

命名空間:   System.Xml.Schema
組件:  System.Xml (於 System.Xml.dll)

System.Object
  System.Xml.Schema.XmlSchemaSet

public class XmlSchemaSet

名稱描述
System_CAPS_pubmethodXmlSchemaSet()

初始化 XmlSchemaSet 類別的新執行個體。

System_CAPS_pubmethodXmlSchemaSet(XmlNameTable)

使用指定的 XmlSchemaSet 初始化 XmlNameTable 類別的新執行個體。

名稱描述
System_CAPS_pubpropertyCompilationSettings

取得或設定 XmlSchemaCompilationSettingsXmlSchemaSet

System_CAPS_pubpropertyCount

取得數目邏輯 XML 結構描述定義語言 (XSD) 結構描述中 XmlSchemaSet

System_CAPS_pubpropertyGlobalAttributes

取得所有全域屬性中所有 XML 結構描述定義語言 (XSD) 結構描述中 XmlSchemaSet

System_CAPS_pubpropertyGlobalElements

取得所有全域項目中所有 XML 結構描述定義語言 (XSD) 結構描述中 XmlSchemaSet

System_CAPS_pubpropertyGlobalTypes

取得所有全域簡單和複雜型別中所有 XML 結構描述定義語言 (XSD) 結構描述中的 XmlSchemaSet

System_CAPS_pubpropertyIsCompiled

取得值,指出是否在 XML 結構描述定義語言 (XSD) 結構描述 XmlSchemaSet 已編譯。

System_CAPS_pubpropertyNameTable

取得預設 XmlNameTable 使用 XmlSchemaSet 時載入新的 XML 結構描述定義語言 (XSD) 結構描述。

System_CAPS_pubpropertyXmlResolver

設定 XmlResolver 用來解析命名空間或位置中參考包含和匯入結構描述的項目。

名稱描述
System_CAPS_pubmethodAdd(String, String)

將 XML 結構描述定義語言 (XSD) 結構描述加入至指定的 URL 來 XmlSchemaSet

System_CAPS_pubmethodAdd(String, XmlReader)

將 XML 結構描述定義語言 (XSD) 結構描述中包含 XmlReaderXmlSchemaSet

System_CAPS_pubmethodAdd(XmlSchema)

將給定 XmlSchemaXmlSchemaSet

System_CAPS_pubmethodAdd(XmlSchemaSet)

將所有的 XML 結構描述定義語言 (XSD) 結構描述中指定 XmlSchemaSetXmlSchemaSet

System_CAPS_pubmethodCompile()

編譯 XML 結構描述定義語言 (XSD) 結構描述加入至 XmlSchemaSet 成一個邏輯結構描述。

System_CAPS_pubmethodContains(String)

指出指定的目標命名空間 URI 的 XML 結構描述定義語言 (XSD) 結構描述是否在 XmlSchemaSet

System_CAPS_pubmethodContains(XmlSchema)

指出是否指定的 XML 結構描述定義語言 (XSD) XmlSchema 物件處於 XmlSchemaSet

System_CAPS_pubmethodCopyTo(XmlSchema[], Int32)

複製所有 XmlSchema 物件從 XmlSchemaSet 到指定的陣列,指定索引處開始。

System_CAPS_pubmethodEquals(Object)

判斷指定的物件是否等於目前的物件。(繼承自 Object。)

System_CAPS_protmethodFinalize()

在記憶體回收開始前,允許物件嘗試釋放資源,並執行其他清除作業。(繼承自 Object。)

System_CAPS_pubmethodGetHashCode()

做為預設雜湊函式。(繼承自 Object。)

System_CAPS_pubmethodGetType()

取得目前執行個體的 Type(繼承自 Object。)

System_CAPS_protmethodMemberwiseClone()

建立目前 Object 的淺層複製。(繼承自 Object。)

System_CAPS_pubmethodRemove(XmlSchema)

從指定的 XML 結構描述定義語言 (XSD) 結構描述中移除 XmlSchemaSet

System_CAPS_pubmethodRemoveRecursive(XmlSchema)

移除指定的 XML 結構描述定義語言 (XSD) 結構描述,它會從匯入的所有結構描述 XmlSchemaSet

System_CAPS_pubmethodReprocess(XmlSchema)

重新處理已經存在於 XML 結構描述定義語言 (XSD) 結構描述 XmlSchemaSet

System_CAPS_pubmethodSchemas()

傳回集合的所有 XML 結構描述定義語言 (XSD) 結構描述中的 XmlSchemaSet

System_CAPS_pubmethodSchemas(String)

傳回集合的所有 XML 結構描述定義語言 (XSD) 結構描述中的 XmlSchemaSet 屬於指定的命名空間。

System_CAPS_pubmethodToString()

傳回代表目前物件的字串。(繼承自 Object。)

名稱描述
System_CAPS_pubeventValidationEventHandler

指定事件處理常式,接收 XML 結構描述定義語言 (XSD) 結構描述驗證錯誤的資訊。

System_CAPS_security 安全性 注意
  • 請勿使用來自未知或未受信任的來源或位置的結構描述。 如此一來會危及您的程式碼的安全性。

  • XML 結構描述 (包括內嵌結構描述) 是本質上容易遭到阻絕服務攻擊。不接受這些受信任的案例中。

  • 結構描述驗證錯誤訊息和例外狀況可能會公開機密資訊的內容模型或結構描述檔案的 URI 路徑。 請小心不要將這些資訊給未受信任的呼叫端公開。

  • < 安全性考量 > 一節涵蓋的其他安全性考量。

XmlSchemaSet 快取或程式庫,您可以在其中儲存的 XML 結構描述定義語言 (XSD) 結構描述。 XmlSchemaSet 會藉由在記憶體中快取結構描述,而不是從檔案或 URL 來存取它們,來增加效能。 每個結構描述由命名空間 URI 和結構描述加入至集合時所指定的位置。 您使用 XmlReaderSettings.Schemas 屬性來指派 XmlSchemaSet 物件的 XML 讀取器應該用來驗證資料。

  • 請勿使用來源不明或不受信任來源的結構描述。 如此一來會危及您的程式碼的安全性。 外部命名空間或位置中參考包含,匯入和重新定義結構描述項目的解決相對於基底 URI 包含或匯入它們之結構描述。 例如,如果包含或匯入結構描述的基底 URI 是空的或 null, ,外部的位置,在解決相對於目前的目錄。 XmlUrlResolver 類別可用於解析外部結構描述的預設值。 若要停用解析包含、 匯入,並重新定義結構描述的項目,設定 XmlSchemaSet.XmlResolver 屬性 null

  • XmlSchemaSet 類別會使用 System.Text.RegularExpressions.Regex 類別來剖析和比對規則運算式中的 XML 結構描述。 使用 XML 結構描述中的規則運算式模式 facet 的驗證可能會增加的 CPU 使用量,並應避免在高可用性案例。

  • 藉由使用所引發的例外狀況 XmlSchemaSet 類別,例如 XmlSchemaException 類別可能包含不應公開受信任的案例中的機密資訊。 例如, SourceUri 屬性 XmlSchemaException URI 的路徑傳回至造成例外狀況的結構描述檔案。 SourceUri 屬性不應公開受信任的案例中。 使機密資訊不會暴露在不受信任的情況下,就應該適當地處理例外狀況。

下列範例會使用儲存在 XmlSchemaSet 中的結構描述,來驗證 XML 檔案。 XML 檔案中的命名空間 (urn:bookstore-schema),會識別 XmlSchemaSet 中用於驗證的結構描述。

using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class Sample {

  public static void Main() {

    // Create the XmlSchemaSet class.
    XmlSchemaSet sc = new XmlSchemaSet();

    // Add the schema to the collection.
    sc.Add("urn:bookstore-schema", "books.xsd");

    // Set the validation settings.
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ValidationType = ValidationType.Schema;
    settings.Schemas = sc;
    settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);

    // Create the XmlReader object.
    XmlReader reader = XmlReader.Create("booksSchemaFail.xml", settings);

    // Parse the file. 
    while (reader.Read());

  }

  // Display any validation errors.
  private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
  }
}

範例會使用下列兩個輸入檔案。

booksSchemaFail.xml:

<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema">
  <book>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
  </book>
  <book genre="novel">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

books.xsd:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="urn:bookstore-schema"
    elementFormDefault="qualified"
    targetNamespace="urn:bookstore-schema">

 <xsd:element name="bookstore" type="bookstoreType"/>

 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>

 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name"  type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

驗證錯誤:命名空間 urn:bookstore-schema 中的項目 book 在 urn:bookstore-schema 命名空間中具有無效的項目子系 author。 命名空間 urn:bookstore-schema 中預期的是 title。

驗證錯誤:命名空間 urn:bookstore-schema 中的項目 author 在 urn:bookstore-schema 命名空間中具有無效的項目子系 'name'。 命名空間 urn:bookstore-schema 中預期的是 first-name。

.NET Framework
自 2.0 起供應
Silverlight
自 2.0 起供應
Windows Phone Silverlight
自 7.0 起供應

此類型的任何 public static (在 Visual Basic 中 共用 在 Visual Basic 中) 成員皆為安全執行緒。不保證任何執行個體成員為安全執行緒。

回到頁首
顯示: