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...,
无论括号里改成什么格式都找不到东西,这是为什么啊???

解决方案 »

  1.   

    带名称空间的例子http://msdn.microsoft.com/zh-cn/library/4bektfx9.aspx
    http://dotnet.aspx.cc/article/7b4c7a42-4cdf-40d1-b293-e86da109a34c/read.aspx
      

  2.   

    谢谢!解决了!!
    但还有个问题,要是命名的元素中带冒号,要怎么引用啊????
     <g id="1028">
       <cge:PSR_Ref ObjectName="123" />
     </g>
    -----------
    命名空间为bk,引用cge:PSR_Ref,要写成bk:什么???
      

  3.   

    这要跟前面的定义一致,如果前面定义的是
    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);