2016-07-23 56 views
2

我想读一些大的XML文件的只是这一部分:阅读部分用的XDocument

--------------------- 

<SOL> 
    <LineDisc>109.90</LineDisc> 
</SOL> 

--------------------- 

,我发现这样做,但我有一些问题。

 string testElement; 
     XmlDocument doc = new XmlDocument(); 


     doc.Load(xmlFilePath); 

     XmlNodeList companyList = doc.GetElementsByTagName("SOL"); 

     foreach (XmlNode node in companyList) 
     { 
      XmlElement companyElement = (XmlElement)node; 

      testElement = companyElement.GetElementsByTagName("LineDisc")[0].InnerText; 
      Console.WriteLine(companyElement.SelectSingleNode("LineDisc").Value); 
      Console.WriteLine(testElement); 

     } 

通过标签名称访问节点的第一方式工作不错,但我的问题是,为什么我不能SelectSingleNode达到同样的事情?

+0

你想说什么,当你使用'SelectSingleNode'?有什么错误? – Mostafiz

+0

@MostafizurRahman对象引用未设置为对象的实例。 –

+0

@analogvoyager你有根元素上定义的任何名称空间? –

回答

0

使用XML命名空间

var namesp = new XmlNamespaceManager(doc.NameTable); 
namesp.AddNamespace("name", "http://ratequote.usfnet.usfc.com/v2/x1"); 

XmlNode companyList = doc.SelectSingleNode("//name:SQL", namesp).FirstChild; 
+0

的确如此,它做到了:companyElement.SelectSingleNode(“// name:LineDisc”,namesp).FirstChild.Value。非常感谢! –

+0

多数民众赞成好,快乐编码:) – Mostafiz