首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET 使用 XDocument 解析帶命名空間 XML 獲取節點值

     編輯:程式設計綜合問答

XML 示例


<cas:serviceResponse xmlns:cas='https://www.yale.edu/tp/cas'>
  <cas:authenticationSuccess>
    <cas:user>bb</cas:user>
    <cas:attributes nid='1'>
      <cas:loginname>bb</cas:loginname>
      <cas:realname>bbggg</cas:realname>
    </cas:attributes>
  </cas:authenticationSuccess>
</cas:serviceResponse>

解析代碼


XDocument doc = XDocument.Parse(xmlString);
XNamespace ns = "https://www.yale.edu/tp/cas";

var auth = doc.Descendants(ns + "authenticationSuccess").FirstOrDefault();
if (auth != null) {
    string loginName = (string)auth.Element(ns + "attributes").Element(ns + "loginname");
    string realName = (string)auth.Element(ns + "attributes").Element(ns + "realname");
    Console.WriteLine($"loginname: {loginName}, realname: {realName}");
}

關鍵點

  • 定義 `XNamespace ns = "uri"`,查詢時 `ns + "localName"` 自動展開為 `{uri}localName`。
  • `Descendants` 遞歸查找,`Element` 直接子元素。
  • 轉型 `(string)element` 自動處理 null 返回 null。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved