本文將說明在使用LINQ to XML處理包含命名空間的XML時,如何避免因命名空間處理不當而導致結果差異的問題。
第一個XML字串包含命名空間聲明,而第二個XML字串則沒有。預設情況下,LINQ to XML假設使用預設命名空間,但這與您的XML結構不符。
為了正確使用LINQ to XML來處理包含xmlns
屬性的XML,請遵循以下方法:
<code class="language-csharp">XDocument xmlElements = XDocument.Parse(theXml); // 定义命名空间 XNamespace ns = "http://myvalue.com"; XNamespace nsa = "http://schemas.datacontract.org/2004/07/My.Namespace"; // 在引用元素时使用命名空间 var elements = from data in xmlElements.Descendants(ns + "Result") select new { TheBool = (bool)data.Element(nsa + "TheBool"), TheId = (int)data.Element(nsa + "TheId"), }; // 迭代结果 foreach (var element in elements) { Console.WriteLine(element.TheBool); Console.WriteLine(element.TheId); }</code>
在這個例子中,我們定義了ns
和nsa
兩個命名空間,分別對應XML中的兩個命名空間。在LINQ查詢中引用元素時,我們在元素名稱前面加入了這些命名空間。
透過此方法,LINQ to XML可以正確辨識並存取對應命名空間內的元素,從而確保無論使用哪個XML字串,都能得到一致且預期的結果。
以上是如何正確使用 LINQ to XML 和 XML 命名空間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!