解決LINQ to XML中XML命名空間導致查詢結果為空的問題
本文探討了使用LINQ to XML處理包含XML命名空間的XML資料時,查詢結果傳回null的問題。 程式碼旨在從XML中提取數據,但由於命名空間的使用不當導致查詢失敗。
LINQ to XML的Descendants
和Element
方法接收XName
參數。直接使用字串取代XName
物件雖然可以自動轉換,但容易出錯。 為了解決這個問題,需要在使用元素名稱的字串表示之前,明確地使用XNamespace
實例來指定命名空間:
<code class="language-csharp">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"), };</code>
請注意Descendants
方法中使用了ns
,Element
方法中使用了nsa
。 透過明確定義命名空間,可以確保目標元素正確,從而解決Descendants
傳回null的問題。
以上是為什麼在使用 XML 命名空間時我的 LINQ to XML 查詢傳回 Null?的詳細內容。更多資訊請關注PHP中文網其他相關文章!