首頁 > 後端開發 > C++ > 如何使用 XDocument 有效地查詢帶有命名空間的 XML 元素?

如何使用 XDocument 有效地查詢帶有命名空間的 XML 元素?

Barbara Streisand
發布: 2025-01-02 19:31:38
原創
986 人瀏覽過

How Can I Effectively Query XML Elements with Namespaces using XDocument?

在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 樹,合併相關的命名空間。

附加說明

  • XML 命名空間用於對元素和屬性進行邏輯分組,尤其是如果來自不同來源的多個文件可能使用相似的元素名稱。
  • 在查詢元素時確保指定正確的命名空間以獲得準確的結果結果。

以上是如何使用 XDocument 有效地查詢帶有命名空間的 XML 元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板