在XDocument 中使用命名空間導航XML
使用包含命名空間的XML 時,必須考慮它們對XDocument 中元素查詢的影響。預設情況下,查詢 XDocument 元素時不考慮命名空間。這可能會導致意外結果,如提供的範例XML 所示:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"> <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system"> <EventID>589828</EventID> <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" /> </System> </E2ETraceEvent>
在此場景中,由於命名空間的存在,以下程式碼為xEl1 傳回null:
XDocument xDoc = XDocument.Parse(CurrentString); XElement xEl1 = xDoc.Element("E2ETraceEvent");
解決命名空間問題
要使用命名空間正確導航XML,請使用X命名空間類別。 XNamespace 提供了一種指定名稱空間並在查詢期間將其與元素名稱組合的方法。以下是修改後的程式碼:
XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system"; XElement xEl2 = xDoc.Element(nsSys + "System");
現在,xEl2 將包含具有指定命名空間的 System 元素。您可以繼續類似地導覽 XML 樹,合併相關的命名空間。
附加說明
以上是如何使用 XDocument 有效地查詢帶有命名空間的 XML 元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!