XmlWriterSettings.ConformanceLevel 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定 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 擲回 。 |