建立 XML 讀取器
更新: November 2007
使用 Create 方法,可建立 XmlReader 執行個體。XmlReaderSettings 類別用於指定要在 XmlReader 物件上啟用的一組功能。
重要事項: |
---|
雖然 Microsoft .NET Framework 包含 XmlReader 類別 (如 XmlTextReader、XmlNodeReader 及 XmlValidatingReader 類別) 的具體實作,但仍建議您在 .NET Framework 2.0 版中,使用 Create 方法來建立 XmlReader 執行個體。 |
使用 XmlReaderSettings 類別上的屬性,可啟用或停用功能。然後,會將 XmlReaderSettings 物件傳遞至 Create 方法。
藉由使用 Create 方法及 XmlReaderSettings 類別,您可取得下列好處:
您可以指定在所建立的 XmlReader 物件上要支援的功能。
可以重複使用 XmlReaderSettings 類別來建立多個讀取器物件。您可以使用相同設定來建立具有相同功能的多個讀取器。或者,您也可以修改 XmlReaderSettings 物件,並建立具有一組不同功能的新讀取器。
您可將功能加入至現有讀取器。Create 方法可以接受其他 XmlReader 物件。基礎 XmlReader 物件可以是使用者定義的讀取器或 XmlTextReader 物件,也可以是要加入其他功能的其他 XmlReader 執行個體。
請充分利用加入至 .NET Framework 2.0 版之 XmlReader 類別的所有新功能。某些功能僅可在由 Create 方法所建立的 XmlReader 物件上使用,例如更好的一致性檢查以及符合 XML 1.0 版建議事項的規範。
下表列出了 XmlReaderSettings 類別上的預設屬性設定。
屬性 |
預設值 |
---|---|
true |
|
ConformanceLevel.Document |
|
false |
|
false |
|
false |
|
0. |
|
0 |
|
null |
|
true |
|
空白的 XmlSchemaSet 物件 |
|
ValidationType.None |
|
新的 XmlUrlResolver 物件 |
XmlReader 案例
下表說明一些通用案例,以及 XmlReaderSettings 類別上要套用的設定。
案例 |
XmlReaderSettings |
---|---|
要求資料必須是格式正確的 XML 文件。 |
ConformanceLevel = ConformanceLevel.Document |
要求資料必須是格式正確的 XML 剖析實體。 |
ConformanceLevel = ConformanceLevel.Fragment |
需要根據 DTD 來驗證資料。 |
ProhibitDtd = false ValidationType = ValidationType.DTD |
需要根據 XML 結構描述來驗證資料。 |
ValidationType = ValidationType.Schema Schemas = 用於驗證的 XmlSchemaSet |
需要根據內嵌 XML 結構描述來驗證資料。 |
ValidationType = ValidationType.Schema ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema |
需要型別支援。 |
ValidationType = ValidationType.Schema Schemas = 要使用的 XmlSchemaSet |
有些特殊案例可能要求使用不是由 Create 方法建立的 XmlReader 實作。
- 如果必須根據 XDR 結構描述進行驗證,請使用 XmlValidatingReader 類別。
注意事項: |
---|
在 .NET Framework 2.0 版中,XmlValidatingReader 類別已過時。建議您考慮移轉至 XML 結構描述,並使用由 Create 方法傳回的 XmlReader 物件進行驗證。 |
若要從 XmlNode 物件讀取 XML 資料,請使用 XmlNodeReader 類別。
如果按照要求必須展開實體 (Create 方法所建立的讀取器展開所有的實體),或者您不想將文字內容正規化,請使用 XmlTextReader 類別。
如果不想傳回預設屬性,請使用 XmlTextReader 類別。
具現化 XmlReader 物件
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
將讀取器執行個體包裝至其他讀取器內
Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)
XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);
鏈結讀取器以加入其他設定
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings) ' XML Schema Validation
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings); // XML Schema Validation