XmlTextWriter 類別

定義

表示提供產生資料流或檔案的快速、非快取、順向方法的寫入器,這些資料流或檔案中包含符合 W3C Extensible Markup Language (XML) 1.0 與 XML Recommendation 中命名空間的 XML 資料。

從 .NET Framework 2.0 開始,建議您改用 XmlWriter 類別。

public ref class XmlTextWriter : System::Xml::XmlWriter
public class XmlTextWriter : System.Xml.XmlWriter
type XmlTextWriter = class
    inherit XmlWriter
Public Class XmlTextWriter
Inherits XmlWriter
繼承
XmlTextWriter

備註

這個類別會實作 XmlWriter 類別。

注意

從 .NET Framework 2.0 開始,建議您使用 XmlWriter.Create 方法和 XmlWriterSettings 類別來建立 XmlWriter 實例,以利用新功能。

XmlTextWriter 會維護對應至目前專案堆疊中定義之所有命名空間的命名空間堆疊。 您可以使用 XmlTextWriter 手動宣告命名空間。

w.WriteStartElement("root");  
w.WriteAttributeString("xmlns", "x", null, "urn:1");  
w.WriteStartElement("item","urn:1");  
w.WriteEndElement();  
w.WriteStartElement("item","urn:1");  
w.WriteEndElement();  
w.WriteEndElement();  

上述 C# 程式碼會產生下列輸出。 XmlTextWriter 將命名空間宣告升階至根項目,以避免在兩個子項目上重複它。 子專案會從命名空間宣告中挑選前置詞。

<root xmlns:x="urn:1">  
 <x:item/>  
 <x:item/>  
</x:root>  

XmlTextWriter 也可讓您覆寫目前的命名空間宣告。 在下列範例中,命名空間 URI 「123」 由 「abc」 覆寫,以產生 XML 元素 <x:node xmlns:x="abc"/>

w.WriteStartElement("x","node","123");  
w.WriteAttributeString("xmlns","x",null,"abc");  

藉由使用採用前置詞做為引數的寫入方法,您也可以指定要使用的前置詞。 在下列範例中,兩個不同的前置詞會對應至相同的命名空間 URI,以產生 XML 文字 <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>

XmlTextWriter w = new XmlTextWriter(Console.Out);  
w.WriteStartElement("x","root","urn:1");  
 w.WriteStartElement("y","item","urn:1");  
 w.WriteEndElement();  
w.WriteEndElement();  
w.Close();  

如果有多個命名空間宣告會將不同的前置詞對應至相同的命名空間 URI, XmlTextWriter 請向後逐步執行命名空間宣告堆疊,並挑選最接近的命名空間宣告。

XmlTextWriter w = new XmlTextWriter(Console.Out);  
w.Formatting = Formatting.Indented;  
w.WriteStartElement("x","root","urn:1");  
w.WriteStartElement("y","item","urn:1");  
w.WriteAttributeString("attr","urn:1","123");  
w.WriteEndElement();  
w.WriteEndElement();  
w.Close();  

在上述 C# 範例中 WriteAttributeString ,因為呼叫未指定前置詞,所以寫入器會使用推送至命名空間堆疊的最後一個前置詞,並產生下列 XML:

<x:root xmlns:x="urn:1">  
 <y:item y:attr="123" xmlns:y="urn:1" />  
</x:root>  

如果發生命名空間衝突, XmlTextWriter 請產生替代前置詞來解決它們。 例如,如果屬性和元素具有相同的前置詞但不同的命名空間, XmlWriter 則會產生屬性的替代前置詞。 產生的前置詞會命名 n{i} 為 ,其中 i 是從 1 開始的數位。 每個元素的數位會重設為 1。

與命名空間 URI 相關聯的屬性必須具有前置詞, (預設命名空間不適用於屬性) 。 這符合 XML 建議中 W3C 命名空間的第 5.2 節。 如果屬性參考命名空間 URI,但未指定前置詞,則寫入器會產生屬性的前置詞。

撰寫空專案時,標記名稱和結束記號之間會新增額外的空間,例如 <item /> 。 這可提供與舊版瀏覽器的相容性。

String當 做方法參數使用 時, nullString.Empty 相等。 String.Empty 遵循 W3C 規則。

若要寫入強型別資料,請使用 XmlConvert 類別將資料類型轉換成字串。 例如,下列 C# 程式碼會將資料從 Double String 轉換成 ,並寫入 專案 <price>19.95</price>

Double price = 19.95;  
writer.WriteElementString("price", XmlConvert.ToString(price));  

XmlTextWriter 不會檢查下列專案:

  • 屬性和專案名稱中的字元無效。

  • 不符合指定編碼的 Unicode 字元。 如果 Unicode 字元不符合指定的編碼,則 XmlTextWriter 不會將 Unicode 字元逸出至字元實體。

  • 重複的屬性。

  • DOCTYPE 公用識別碼或系統識別碼中的字元。

安全性考量

下列專案是使用 XmlTextWriter 類別時要考慮的專案。

  • XmlTextWriter 回的例外狀況可能會揭露您不想升至應用程式的路徑資訊。 應用程式必須捕捉例外狀況並予以適當處理。

  • XmlTextWriter 傳遞到其他應用程式時,基礎資料流會對該應用程式公開。 如果您需要將 XmlTextWriter 傳遞到非完全信任的應用程式,則應改用 XmlWriter 方法所建立的 Create 物件。

  • XmlTextWriter不會驗證傳遞至 WriteDocTypeWriteRaw 方法的任何資料。 您不應該將任意資料傳遞至這些方法。

  • 如果預設設定已變更,則不保證產生的輸出是格式正確的 XML 資料。

  • 不接受來自不受信任來源的支援元件,例如 Encoding 物件。

建構函式

XmlTextWriter(Stream, Encoding)

使用指定的資料流和編碼方式,建立 XmlTextWriter 類別的執行個體。

XmlTextWriter(String, Encoding)

使用指定的檔案建立 XmlTextWriter 類別的執行個體。

XmlTextWriter(TextWriter)

使用指定的 TextWriter 來建立 XmlTextWriter 類別的執行個體。

屬性

BaseStream

取得基礎資料流物件。

Formatting

表示格式化輸出的方式。

Indentation

取得或設定當 Formatting 設定為 Formatting.Indented 時,每一層級要寫入多少縮排字元。

IndentChar

取得或設定當 Formatting 設為 Formatting.Indented 時用於縮排的字元。

Namespaces

取得或設定值,指出是否支援命名空間。

QuoteChar

取得或設定用來括住屬性值的字元。

Settings

取得 XmlWriterSettings 物件,用於建立這個 XmlWriter 執行個體。

(繼承來源 XmlWriter)
WriteState

取得寫入器的狀態。

XmlLang

取得目前的 xml:lang 範圍。

XmlSpace

取得 XmlSpace,表示目前的 xml:space 範圍。

方法

Close()

關閉這個資料流與基礎資料流。

Dispose()

釋放 XmlWriter 類別目前的執行個體所使用的全部資源。

(繼承來源 XmlWriter)
Dispose(Boolean)

釋放 XmlWriter 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 XmlWriter)
DisposeAsync()

非同步執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之由應用程式定義的工作。

(繼承來源 XmlWriter)
DisposeAsyncCore()

以非同步方式執行與釋放 (Free)、釋放 (Release) 或重設受控資源相關聯的應用程式定義工作。

(繼承來源 XmlWriter)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Flush()

將緩衝區的所有內容清空至基礎資料流,然後清空基礎資料流。

FlushAsync()

以非同步的方式將緩衝區的所有內容清空至基礎資料流,然後清空基礎資料流。

(繼承來源 XmlWriter)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
LookupPrefix(String)

傳回最接近命名空間 URI 在目前命名空間範圍中定義的前置詞。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
WriteAttributes(XmlReader, Boolean)

在衍生類別中覆寫時,寫出在 XmlReader 的目前位置找到的所有屬性。

(繼承來源 XmlWriter)
WriteAttributesAsync(XmlReader, Boolean)

非同步寫出在 XmlReader 中的目前位置找到的所有屬性。

(繼承來源 XmlWriter)
WriteAttributeString(String, String)

在衍生類別中覆寫時,寫出具有指定的區域名稱與數值的屬性。

(繼承來源 XmlWriter)
WriteAttributeString(String, String, String)

在衍生類別中覆寫時,寫入具有指定區域名稱、命名空間 URI 和值的屬性。

(繼承來源 XmlWriter)
WriteAttributeString(String, String, String, String)

在衍生類別中覆寫時,寫出具有指定的前置詞、區域名稱、命名空間 URI 及其值的屬性。

(繼承來源 XmlWriter)
WriteAttributeStringAsync(String, String, String, String)

以非同步的方式寫出具有指定之前置詞、區域名稱、命名空間 URI 和值的屬性。

(繼承來源 XmlWriter)
WriteBase64(Byte[], Int32, Int32)

以 base64 編碼指定的二進位位元組並寫出產生的文字。

WriteBase64Async(Byte[], Int32, Int32)

以非同步的方式將指定的二進位位元組編碼為 base64 並寫出產生的文字。

(繼承來源 XmlWriter)
WriteBinHex(Byte[], Int32, Int32)

以 Binhex 編碼指定的二進位位元組,並寫出產生的文字。

WriteBinHexAsync(Byte[], Int32, Int32)

以非同步的方式將指定的二進位位元組編碼為 BinHex 並寫出產生的文字。

(繼承來源 XmlWriter)
WriteCData(String)

寫出包含指定文字的 <![CDATA[...]]> 區塊。

WriteCDataAsync(String)

以非同步的方式寫出包含指定文字的 <![CDATA[...]]> 區塊。

(繼承來源 XmlWriter)
WriteCharEntity(Char)

強制產生指定的 Unicode 字元值的字元實體。

WriteCharEntityAsync(Char)

以非同步的方式強制產生指定的 Unicode 字元值的字元實體。

(繼承來源 XmlWriter)
WriteChars(Char[], Int32, Int32)

一次將文字寫入一個緩衝區。

WriteCharsAsync(Char[], Int32, Int32)

以非同步的方式一次將文字寫入一個緩衝區。

(繼承來源 XmlWriter)
WriteComment(String)

寫出包含指定文字的註解 <!--...-->。

WriteCommentAsync(String)

以非同步的方式寫出包含指定文字的註解 <!--...-->。

(繼承來源 XmlWriter)
WriteDocType(String, String, String, String)

寫入具有指定名稱與選擇性屬性的 DOCTYPE 宣告。

WriteDocTypeAsync(String, String, String, String)

以非同步的方式寫入具有指定名稱與選擇性屬性的 DOCTYPE 宣告。

(繼承來源 XmlWriter)
WriteElementString(String, String)

寫入具有指定之區域名稱和值的項目。

(繼承來源 XmlWriter)
WriteElementString(String, String, String)

寫入具有指定之區域名稱、命名空間 URI 和值的項目。

(繼承來源 XmlWriter)
WriteElementString(String, String, String, String)

寫入具有指定的前置詞、區域名稱、命名空間 URI 和值的項目。

(繼承來源 XmlWriter)
WriteElementStringAsync(String, String, String, String)

以非同步的方式寫入具有指定之前置詞、區域名稱、命名空間 URI 和值的項目。

(繼承來源 XmlWriter)
WriteEndAttribute()

關閉先前的 WriteStartAttribute(String, String, String) 呼叫。

WriteEndAttributeAsync()

非同步關閉上一個 WriteStartAttribute(String, String) 呼叫。

(繼承來源 XmlWriter)
WriteEndDocument()

關閉任何開啟的項目或屬性,並將寫入器回復開始狀態。

WriteEndDocumentAsync()

以非同步的方式關閉任何開啟的項目或屬性,並將寫入器回復開始狀態。

(繼承來源 XmlWriter)
WriteEndElement()

關閉一個項目並快顯對應的命名空間範圍。

WriteEndElementAsync()

以非同步的方式關閉一個項目並取出對應的命名空間範圍。

(繼承來源 XmlWriter)
WriteEntityRef(String)

寫出如 &name; 的實體參考。

WriteEntityRefAsync(String)

以非同步的方式將實體參考寫出為 &name;

(繼承來源 XmlWriter)
WriteFullEndElement()

關閉一個項目並快顯對應的命名空間範圍。

WriteFullEndElementAsync()

以非同步的方式關閉一個項目並取出對應的命名空間範圍。

(繼承來源 XmlWriter)
WriteName(String)

寫出指定的名稱,以確保它是符合 W3C XML 1.0 建議的有效名稱。

WriteNameAsync(String)

非同步地寫出指定的名稱,以確保它是符合 W3C XML 1.0 建議 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name) (英文) 的有效名稱。

(繼承來源 XmlWriter)
WriteNmToken(String)

寫出指定的名稱,以確保它是符合 W3C XML 1.0 建議的有效 NmToken

WriteNmTokenAsync(String)

非同步地寫出指定的名稱,以確保它是符合 W3C XML 1.0 建議 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name) (英文) 的有效 NmToken。

(繼承來源 XmlWriter)
WriteNode(XmlReader, Boolean)

在衍生類別中覆寫時,從讀取器複製所有內容至寫入器,並將讀取器移至下一個同層級 (Sibling) 的開頭。

(繼承來源 XmlWriter)
WriteNode(XPathNavigator, Boolean)

XPathNavigator 物件中的所有項目複製到寫入器。 XPathNavigator 的位置保持不變。

(繼承來源 XmlWriter)
WriteNodeAsync(XmlReader, Boolean)

以非同步的方式從讀取器複製所有內容至寫入器,並將讀取器移至下一個同層級 (Sibling) 的開頭。

(繼承來源 XmlWriter)
WriteNodeAsync(XPathNavigator, Boolean)

以非同步方式將所有項目從 XPathNavigator 物件複製到寫入器。 XPathNavigator 的位置保持不變。

(繼承來源 XmlWriter)
WriteProcessingInstruction(String, String)

寫出名稱與文字之間有空白的處理指示,如下所示:<?name text?>。

WriteProcessingInstructionAsync(String, String)

以非同步方式寫出名稱與文字之間有空白的處理指示,如下所示:<?name text?>。

(繼承來源 XmlWriter)
WriteQualifiedName(String, String)

寫出命名空間限定名稱。 這個方法會查詢在指定之命名空間範圍中的前置詞。

WriteQualifiedNameAsync(String, String)

以非同步的方式寫出命名空間限定名稱。 這個方法會查詢在指定之命名空間範圍中的前置詞。

(繼承來源 XmlWriter)
WriteRaw(Char[], Int32, Int32)

從字元緩衝區手動寫入未經處理的標記。

WriteRaw(String)

從字串手動寫入未經處理的標記 (Raw Markup)。

WriteRawAsync(Char[], Int32, Int32)

以非同步的方式從字元緩衝區手動寫入未經處理的標記。

(繼承來源 XmlWriter)
WriteRawAsync(String)

以非同步的方式從字串手動寫入未經處理的標記 (Raw Markup)。

(繼承來源 XmlWriter)
WriteStartAttribute(String)

寫入具有指定之區域名稱的屬性開頭。

(繼承來源 XmlWriter)
WriteStartAttribute(String, String)

寫入具有指定之區域名稱和命名空間 URI 之屬性的開頭。

(繼承來源 XmlWriter)
WriteStartAttribute(String, String, String)

寫入屬性的開頭。

WriteStartAttributeAsync(String, String, String)

以非同步的方式寫入具有指定之前置詞、本機名稱和命名空間 URI 之屬性的開頭。

(繼承來源 XmlWriter)
WriteStartDocument()

使用版本「1.0」寫入 XML 宣告。

WriteStartDocument(Boolean)

使用版本「1.0」寫入 XML 宣告與獨立屬性。

WriteStartDocumentAsync()

以非同步的方式使用「1.0」版寫入 XML 宣告。

(繼承來源 XmlWriter)
WriteStartDocumentAsync(Boolean)

以非同步的方式使用「1.0」版寫入 XML 宣告與獨立屬性。

(繼承來源 XmlWriter)
WriteStartElement(String)

在衍生類別中覆寫時,寫出具有指定之區域名稱的開頭標記。

(繼承來源 XmlWriter)
WriteStartElement(String, String)

在衍生類別中覆寫時,寫入指定的開頭標記並與指定的命名空間產生關聯。

(繼承來源 XmlWriter)
WriteStartElement(String, String, String)

寫入指定的開頭標記,並使它與指定的命名空間及前置詞產生關聯。

WriteStartElementAsync(String, String, String)

以非同步的方式寫入指定的開頭標記,並將它與指定的命名空間與前置詞產生關聯。

(繼承來源 XmlWriter)
WriteString(String)

寫入指定的文字內容。

WriteStringAsync(String)

以非同步的方式寫入指定的文字內容。

(繼承來源 XmlWriter)
WriteSurrogateCharEntity(Char, Char)

產生和寫入 Surrogate 字元字組的 Surrogate 字元實體。

WriteSurrogateCharEntityAsync(Char, Char)

以非同步的方式產生和寫入 Surrogate 字元字組的 Surrogate 字元實體。

(繼承來源 XmlWriter)
WriteValue(Boolean)

寫入 Boolean 值。

(繼承來源 XmlWriter)
WriteValue(DateTime)

寫入 DateTime 值。

(繼承來源 XmlWriter)
WriteValue(DateTimeOffset)

寫入 DateTimeOffset 值。

(繼承來源 XmlWriter)
WriteValue(Decimal)

寫入 Decimal 值。

(繼承來源 XmlWriter)
WriteValue(Double)

寫入 Double 值。

(繼承來源 XmlWriter)
WriteValue(Int32)

寫入 Int32 值。

(繼承來源 XmlWriter)
WriteValue(Int64)

寫入 Int64 值。

(繼承來源 XmlWriter)
WriteValue(Object)

寫入物件值。

(繼承來源 XmlWriter)
WriteValue(Single)

寫入單精確度浮點數。

(繼承來源 XmlWriter)
WriteValue(String)

寫入 String 值。

(繼承來源 XmlWriter)
WriteWhitespace(String)

寫出指定的空白字元。

WriteWhitespaceAsync(String)

以非同步的方式寫出指定的空白字元。

(繼承來源 XmlWriter)

明確介面實作

IDisposable.Dispose()

如需這個成員的說明,請參閱 Dispose()

(繼承來源 XmlWriter)

擴充方法

ConfigureAwait(IAsyncDisposable, Boolean)

設定如何執行從非同步可處置項目傳回的工作 await。

適用於

另請參閱