XmlWriterSettings.ConformanceLevel 屬性

定義

取得或設定 XML 寫入器檢查 XML 輸出的一致性層級。

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

屬性值

其中一個指定一致性層級 (文件、片段或自動偵測) 的列舉值。 預設為 Document

範例

下列範例會將 XML 片段寫入記憶體資料流程。

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;

// Create the XmlWriter object and write some content.
MemoryStream strm = new MemoryStream();
XmlWriter writer = XmlWriter.Create(strm, settings);
writer.WriteElementString("orderID", "1-456-ab");
writer.WriteElementString("orderID", "2-36-00a");
writer.Flush();
writer.Close();

// Do additional processing on the stream.
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.OmitXmlDeclaration = true
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.CloseOutput = false

' Create the XmlWriter object and write some content.
Dim strm as MemoryStream = new MemoryStream()
Dim writer As XmlWriter = XmlWriter.Create(strm, settings)
writer.WriteElementString("orderID", "1-456-ab")
writer.WriteElementString("orderID", "2-36-00a")
writer.Flush()
writer.Close()

' Do additional processing on the stream.

備註

屬性 XmlWriterSettings.ConformanceLevel 會設定 XML 寫入器,以檢查並保證所寫入的資料流程符合一組特定的規則。 您可以檢查 XML 資料,以查看它符合格式正確的 XML 1.0 檔或檔片段的規則。 下表描述三個設定。 預設值為檔層級一致性。

設定 描述
Document 確保 XML 輸出符合 格式正確的 XML 1.0 檔規則 ,而且可由任何符合的處理器處理。

檔一致性檢查包含大部分的片段層級檢查,也請確定下列事項:

- 最上層專案沒有 XML 宣告、DTD、元素、批註、空白字元或處理指示以外的任何節點。
- XML 資料有一個且只有一個最上層元素節點。

XML 寫入器不會剖析寫入的 DTD 資訊。 使用者負責確保 DTD 格式正確。
Fragment 確保 XML 輸出符合 格式正確的 XML 1.0 檔片段規則

此設定會接受最上層有多個根項目或文位元組點的 XML 資料。 此檢查層級可確保任何處理器都可使用做為 XML 1.0 外部剖析實體讀取的資料流。

檔片段中不允許 DTD 資訊。
Auto 指定 XML 寫入器應該根據傳入資料來判斷一致性檢查的層級。 當您不知道產生的 XML 是否為格式正確的 XML 檔或片段時,此設定會很有用。

文件一致性檢查適用於下列情況:

- 如果 WriteStartDocument 呼叫 方法。
- 如果寫入 DTD 資訊。

如果 XML 資料包含下列其中一項,則會套用片段一致性檢查:

- 根層級的 Text、CDATA 或 EntityReference 節點。
- 根層級的多個元素。
- 根層級沒有元素。

如果出現衝突 (如當您嘗試在根層級寫入 Text 節點及 DTD 時),則會擲回 XmlException

如果您要包裝另一個 XmlWriter 物件,外部物件不會進行任何額外的一致性檢查;這會留在基礎物件。

如果 XML 寫入器偵測到任何違反指定層級一致性的資訊,則會擲回例外狀況。 在某些情況下,XML 寫入器會自動校正一致性錯誤。 例如,寫入器會關閉未封閉的屬性,而不會擲回例外狀況。 下表顯示每個設定中如何處理各種一致性違規。

條件 Document Fragment Auto
找到 DTD 資訊。 不是此設定的違規。 不過,XML 寫入器不會檢查 DTD;使用者必須確定 DTD 格式正確。 XmlException 擲回 。 會套用檔一致性檢查。
呼叫 WriteStartDocument 此設定未被視為違規。 XmlException 擲回 。 會套用檔一致性檢查。
多次呼叫 WriteStartDocument XmlException 擲回 。 XmlException 擲回 。 XmlException 擲回 。
文字值會出現在最上層 (不在元素或屬性節點下方) 。 XmlException 擲回 。 不視為違規。 套用片段一致性檢查。
多個元素或沒有元素出現在最上層。 XmlException 擲回 。 不視為違規。 套用片段一致性檢查。
最上層專案是空白字元。 不視為違規。 不視為違規。 不視為違規。
WriteEndAttribute 不會呼叫 以結束屬性節點。 由 XML 寫入器修正。 由 XML 寫入器修正。 由 XML 寫入器修正。
例如,XML 寫入器處於不適當的巢狀狀態 (, WriteStartElement 呼叫後面接著 WriteEndAttribute) 。 XmlException 擲回 。 XmlException 擲回 。 XmlException 擲回 。
最上層專案是屬性。 XmlException 擲回 。 XmlException 擲回 。 XmlException 擲回 。
找到多個連續的文字節點。 不視為違規,但使用者必須負責串連文位元組點。 不視為違規,但使用者必須負責串連文位元組點。 不視為違規,但使用者必須負責串連文位元組點。
同一命名空間前置詞在一個項目中宣告兩次。 XML 寫入器會產生第二個命名空間的新前置詞。 XML 寫入器會產生第二個命名空間的新前置詞。 XML 寫入器會產生第二個命名空間的新前置詞。
WriteStartElement 指定前置詞和未在該範圍內宣告的命名空間,或前置詞與不同的命名空間相關聯。 XML 寫入器會寫入必要的命名空間節點。 XML 寫入器會寫入必要的命名空間節點。 XML 寫入器會寫入必要的命名空間節點。
WriteStartAttribute 指定前置詞和未在該範圍內宣告的命名空間。 XML 寫入器會寫入必要的命名空間節點。 XML 寫入器會寫入必要的命名空間節點。 XML 寫入器會寫入必要的命名空間節點。
WriteStartAttribute 會指定前置詞和命名空間,但前置詞與不同的範圍內命名空間相關聯。 XML 寫入器會忽略指定的前置詞,並查閱正確的前置詞或產生新的前置詞。 XML 寫入器會忽略指定的前置詞,並查閱正確的前置詞或產生新的前置詞。 XML 寫入器會忽略指定的前置詞,並查閱正確的前置詞或產生新的前置詞。
WriteQualifiedName 是用來使用範圍中不存在的命名空間來寫入專案內容。 XmlException 擲回 。 XmlException 擲回 。 XmlException 擲回 。
WriteQualifiedName 是用來使用範圍中不存在的命名空間來寫入屬性內容。 XML 寫入器會寫入必要的命名空間宣告。 XML 寫入器會寫入必要的命名空間宣告。 XML 寫入器會寫入必要的命名空間宣告。
屬性 xml:space 不包含有效的值。 XmlException 擲回 。 XmlException 擲回 。 XmlException 擲回 。
發現無效的名稱。 XmlException 擲回 。 XmlException 擲回 。 XmlException 擲回 。
前置 xml 詞與 URI 不相符。 XML 寫入器不會檢查此類型的違規。 XML 寫入器不會檢查此類型的違規。 XML 寫入器不會檢查此類型的違規。
前置 xml 詞與 URI 不相符 http://www.w3.org/XML/1998/namespace XmlException 擲回 。 XmlException 擲回 。 XmlException 擲回 。
前置 xmlns 詞或本機名稱與 URI 不相符。 XML 寫入器不會檢查此類型的違規。 XML 寫入器不會檢查此類型的違規。 XML 寫入器不會檢查此類型的違規。
前置 xmlns 詞或本機名稱與 URI 不相符 http://www.w3.org/2000/xmlns XmlException 擲回 。 XmlException 擲回 。 XmlException 擲回 。

適用於