<?xml version="1.0" encoding="GB2312"?>
<sml:FeatureCollectionInfo Name="railway" SubName="" Type="Line">
   <gml:BoundedBy>
      <gml:Envelope>
         <gml:lowerCorner>113.225640 23.068123</gml:lowerCorner>
         <gml:upperCorner>113.370236 23.186493</gml:upperCorner>
      </gml:Envelope>
   </gml:BoundedBy>
</sml:FeatureCollectionInfo>现希望通过XPath查询FeatureCollectionInfo节点的内容,写了以下语句:
XmlDocument doc=new XmlDocument();
doc.Load("railway.xml");XmlNode featureInfo;
XmlNode root=doc.DocumentElement;
string xPath ="//sml:FeatureCollectionInfo";
featureInfo=root.SelectSingleNode(xPath);//出错,因为有冒号的原因
string str="Name: "+featureInfo.Attributes["Name"].Value.ToString()+
"  Type: "+featureInfo.Attributes["Type"].Value.ToString();
MessageBox.Show(str);请问上述xPath应该怎样写????

解决方案 »

  1.   

    http://msdn.microsoft.com/library/CHS/cpref/html/frlrfsystemxmlxmlnodeclassselectsinglenodetopic2.asp
      

  2.   

    直接用"FeatureCollectionInfo"不行么?!
      

  3.   

    已经解决了,是需要用XmlNamespaceManager 类加入sml到命名空间。
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
    nsmgr.AddNamespace("sml","http://www.supermap.com/sml");查询语句改为:
    XmlNode featureInfo=root.SelectSingleNode("//sml:FeatureCollectionInfo",nsmgr);多谢各位!!1