首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 發現之旅第一講:XML 開發(六)

     編輯:關於C語言

XmlTextWriter 串流輸出模式

  • 唯寫、前進、快速、低記憶體,無法回頭修改已寫內容。
  • 適合大量資料一次性輸出。

XmlDocument 物件模型模式

  • 在記憶體建立完整 DOM 樹,**可隨時查詢、修改、刪除**節點。
  • 較慢、佔記憶體,但極具彈性。

XmlDocument 實作範例


XmlDocument doc = new XmlDocument();
doc.AppendChild(doc.CreateElement("Table"));

using (OleDbConnection conn = new OleDbConnection(connStr))
{
    conn.Open();
    using (OleDbCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "SELECT * FROM Customers";
        using (OleDbDataReader rd = cmd.ExecuteReader())
        {
            int fc = rd.FieldCount;
            string[] names = new string[fc];
            for (int i = 0; i < fc; i++) names[i] = rd.GetName(i);

            while (rd.Read())
            {
                XmlElement rec = doc.CreateElement("Record");
                doc.DocumentElement.AppendChild(rec);
                for (int i = 0; i < fc; i++)
                {
                    XmlElement fld = doc.CreateElement(names[i]);
                    rec.AppendChild(fld);
                    object v = rd.GetValue(i);
                    if (v == null || v == DBNull.Value)
                        fld.SetAttribute("Null", "1");
                    else
                        fld.AppendChild(doc.CreateTextNode(v.ToString()));
                }
            }
        }
    }
}

// XSLT 或直接輸出
if (Request.QueryString["xsl"] != null) { /* Transform */ }
else Response.Write(doc.DocumentElement.OuterXml);

關鍵差異提醒

  • XmlTextWriter 需手動管理配對呼叫(WriteStartElement/WriteEndElement)。
  • XmlDocument 以樹狀結構直觀操作,適合需後續處理的情境。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved