Using XPath to select nodes with namespace in C# / 在C#中用XPath選取具有namespace之節點

處理 XML 文件資料時,利用 XPath 來選取文件中節點是蠻常見的方式,可是當這個節點是具有 namespace 時,該怎麼辦呢?

一般情況(選取沒有 namespace 之節點 / select nodes without namespace)

XmlDocument xd = new XmlDocument();
XmlNodeList xnl;
xd.Load(xmlfile); 
xnl = xd.SelectNodes(XPath_expression); 

選取有 namespace 之節點 / select nodes with namespace

XmlDocument xd = new XmlDocument();
XmlNodeList xnl;
XmlNamespaceManager xnm;
xd.Load(xmlfile); 
xnm = new XmlNamespaceManager(xd.NameTable);
xnm.AddNamespace("smh", "http://www.google.com/history/"); 
xnl = xd.SelectNodes(XPath_expression, xnm);

 

 

 

Ref: http://weblogs.asp.net/wallen/archive/2003/04/02/4725.aspx