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

C# XML 檔案轉字串:InnerXml vs OuterXml 差異與 XmlDocument.Load 完整用法

     編輯:關於C#

兩種載入方式比較

屬性/方法回傳內容包含根元素適用場景
XmlDocument.InnerXml根元素內部的 XML 字串否只需子樹內容、拼接到其他 XML
XmlDocument.OuterXml根元素本身及內部的完整 XML是完整文件序列化、儲存、傳輸
XmlNode.OuterXml該節點本身及子樹是 (該節點)特定節點序列化

程式碼示範

string filePath = @"E:\voucher.xml";

// 範例 XML 內容:
// 
//   A
//   B
// 

var doc = new XmlDocument();
doc.Load(filePath);

// 1. InnerXml - 不含根節點
string inner = doc.InnerXml;
Console.WriteLine("InnerXml:");
Console.WriteLine(inner);
// 輸出:
//   A
//   B

// 2. OuterXml - 含根節點
string outer = doc.OuterXml;
Console.WriteLine("OuterXml:");
Console.WriteLine(outer);
// 輸出:
// 
//   A
//   B
// 

// 3. 特定節點 OuterXml
XmlNode item1 = doc.SelectSingleNode("//Item[@Id='1']");
Console.WriteLine("Item 1 OuterXml: " + item1.OuterXml);
// A

XmlDocument.Load 完整用法

var doc = new XmlDocument();

// 1. 載入檔案
doc.Load(@"C:\Data\config.xml");

// 2. 載入字串
doc.LoadXml("Value");

// 3. 載入 Stream (含網路串流)
using (var stream = File.OpenRead(@"C:\Data\config.xml"))
    doc.Load(stream);

// 4. 載入 TextReader
using (var reader = new StringReader(xmlString))
    doc.Load(reader);

// 5. 載入 XmlReader (最高效能、可驗證 XSD)
var settings = new XmlReaderSettings { ValidationType = ValidationType.Schema };
settings.Schemas.Add(null, "schema.xsd");
using (var reader = XmlReader.Create(@"C:\Data\config.xml", settings))
    doc.Load(reader);

儲存對應方法

// 存檔
doc.Save(@"C:\Output\config.xml");

// 存入 Stream
using (var fs = File.Create(@"C:\Output\config.xml"))
    doc.Save(fs);

// 存入 TextWriter
using (var sw = new StringWriter())
{
    doc.Save(sw);
    string xml = sw.ToString();
}

// 存入 XmlWriter (可控制縮排、編碼)
var writerSettings = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8 };
using (var xw = XmlWriter.Create(@"C:\Output\pretty.xml", writerSettings))
    doc.Save(xw);

常見問題

  • 編碼宣告遺失: OuterXml 不包含 XML 宣告 (``),若需完整文件請用 Save 寫入檔案/串流。
  • 空白處理: Load 預設保留非顯著空白,LoadXml 同;若需移除可設定 XmlReaderSettings.IgnoreWhitespace = true。
  • 大檔案記憶體: XmlDocument 為 DOM 模型,全載入記憶體,>50MB 檔案建議改用 XmlReader 串流處理或 XDocument (LINQ to XML)。

視覺化差異示意

InnerXml (無根節點):

OuterXml (含根節點):

參考資源

原文連結:https://www.bianceng.cn/Programming/csharp/201410/45577.htm

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved