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

C# SelectSingleNode 取不到值:屬性非節點,需用 Attributes 取值

     編輯:程式設計疑難解答

XML:

<setting name='AppConnection' value=''/>

XPath:.../setting[@name='AppConnection']/value → 回傳 null。

原因

value 是 setting 元素的**屬性**,不是子節點。XPath 以 /value 尋找子元素,自然找不到。

修正

string xpath = @"configuration/applicationSettings/test1.Properties.Settings/setting[@name='AppConnection']";
XmlNode node = doc.SelectSingleNode(xpath);
string val = (node != null && node.Attributes["value"] != null) 
             ? node.Attributes["value"].Value : "NULL";

關鍵點

  • SelectSingleNode 回傳的是元素節點(setting)。
  • 屬性值透過 node.Attributes["name"].Value 取得。
  • XPath 也可直接取屬性:.../setting[@name='AppConnection']/@value(需 SelectSingleNode 回傳 XmlAttribute,.NET 2.0+ 支援)。

「屬性 ≠ 子節點」是 XML 導航的基本觀念。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved