日期:2014-05-18  浏览次数:21038 次

C#里XMl用selectNode为什么总是读不到值??
xml的大概结构:
<svg>
 <defs>
  ...
 </defs>
 <g>
  <g>
  </g>
 </g>
</svg>
-----------------------
  XmlDocument mDocument new XmlDocument();
  mDocument.Load(@"xml1.svg");
  XmlNodeList nodeList = mDocument.SelectNodes("*");
  XmlNodeList nodeList = mDocument.SelectNodes("/svg");
调用mDocument.SelectNodes("*")能正确显示,mDocument.SelectNodes("/svg")就查找不到。。。
其余的,//svg、//svg/g、//g...,
无论括号里改成什么格式都找不到东西,这是为什么啊???

------解决方案--------------------
带名称空间的例子

http://msdn.microsoft.com/zh-cn/library/4bektfx9.aspx
http://dotnet.aspx.cc/article/7b4c7a42-4cdf-40d1-b293-e86da109a34c/read.aspx
------解决方案--------------------
这要跟前面的定义一致,如果前面定义的是
xmlns:cge="bk:"

System.Xml.XmlNamespaceManager nsmanager = new System.Xml.XmlNamespaceManager(doc.NameTable);
nsmanager.AddNamespace("xxxx", "bk:");//这里的xxxx写法与下面的要一致,bk:要与 xmlns:cge="bk:" 一致
System.Xml.XmlNode node = doc.SelectNodes("//xxxx:PSR_Ref", nsmanager);