使用 XmlReader 最佳化 C# 中的 XML 解析
為了在 C# 中有效處理 XML 文檔,建議採用針對不同節點使用單獨類的結構化方法。 此範例重點在於讀取 Account
數據,並使用專用的 AccountBase
類別來處理 NameOfKin
等屬性。 使用 StatementsAvailable
.XmlReader.Skip()
可以優雅地解決導航到
AccountBase
類別包含以下程式碼片段:
<code class="language-csharp">while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "StatementsAvailable") { reader.Skip(); // Efficiently skips the StatementsAvailable element and its children ProcessStatements(reader); break; // Moves to the next Account element } } }</code>
ProcessStatements()
方法再利用 Statement
類別來解析各個語句屬性。 這種模組化設計可以無縫擴展到其他 XML 子元素。
雖然 XmlReader
擅長高效流處理,但 LINQ to XML 為 XML 操作提供了更用戶友好的語法。對於大型 XML 文件,請考慮採用混合方法:使用 XmlReader
將資料以可管理的區塊的形式進行串流傳輸,然後使用更方便的 LINQ to XML 處理這些區塊。
透過巢狀循環處理改進程式碼結構:
這個精煉的程式碼範例簡化了巢狀讀取循環,並避免了潛在的「讀取超出預期元素」錯誤:
<code class="language-csharp">using (XmlReader reader = XmlReader.Create(inputUrl)) { reader.ReadToDescendant("ApplicationPool"); // Directly navigate to the root element while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "Account") { AccountBase account = new AccountBase(reader); reader.ReadToFollowing("StatementsAvailable"); // Efficiently finds StatementsAvailable reader.Skip(); account.ProcessStatements(reader); } } }</code>
此增強功能簡化了流程,使程式碼更乾淨、更健壯。 直接導航到根元素並使用 ReadToFollowing
提高了效率和可讀性。
以上是如何在C#中使用XmlReader高效讀取和處理XML資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!