XmlNodeList.SelectSingleNode()返回null,针对不同的XML格式

问题描述:

我有一个XML这样的:XmlNodeList.SelectSingleNode()返回null,针对不同的XML格式

<configuration> 
    <connectionStrings> 
    <add name="name1" value="value1"> 
    <add name="name2" value="value2"> 
    </connectionStrings> 
<configuration> 

在此,我得到

XmlNodeList nodeList = doc.GetElementsByTagName("connectionStrings"); 
foreach(XmlNode xn in nodeList) 
{ 
    var anode = xn.SelectSingleNode("add"); 
} 

这里的 “VAR阳极” 正在恢复我的正确的价值观“名称“属性。 但是,当我的XML是这样的:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <connectionStrings> 
    <add name="name1" value="value1"> 
    <add name="name2" value="value2"> 
    </connectionStrings> 
<configuration> 

我得到阳极为空。

请帮忙。

+3

您需要在查询中使用命名空间。请参阅[XmlDocument.SelectSingleNode和xmlNamespace问题](https://stackoverflow.com/questions/4171451/xmldocument-selectsinglenode-and-xmlnamespace-issue)。此外,'GetElementsByTagName()'已弃用。从[文档](https://msdn.microsoft.com/en-us/library/dc0c9ekk(v = vs.110).aspx):*建议您使用XmlNode.SelectNodes或XmlNode.SelectSingleNode方法而不是GetElementsByTagName方法。* – dbc

下面的代码对我的作品:

var xElement = XElement.Load("Sample.xml"); 

var elements = xElement.Elements().Elements(); 

      foreach (var element in elements) 
      { 
       var name = element.Attribute("value").Value; 
      } 

请试试这个。

注:sample.xml中包含:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <connectionStrings> 
    <add name="name1" value="value1"/> 
    <add name="name2" value="value2"/> 
    </connectionStrings> 
</configuration> 

您发布的XML文件,因此未接近正常。上面的XML格式正确。

+0

我可以知道为什么不投票。只是想知道我错过了什么。该代码适用于我。 – Pabdev