2014-07-22 128 views
2

的价值我有一个XML文件:无法获取XML节点

<?xml version="1.0" encoding="utf-8"?> 
<Projects> 
<Project> 
    <Name>CELL</Name> 
    <FunctionList> 
     <Function>guildline_addproperties</Function> 
     <Function>guildline_emptylaunchcondition</Function> 
     <Function>msi_setvolumelabel</Function> 
    </FunctionList> 
</Project> 
<Project> 
    <Name>AXA</Name> 
    <FunctionList> 
     <Function>guildline_addproperties</Function> 
     <Function>guildline_emptylaunchcondition</Function> 
     <Function>msi_setvolumelabel</Function> 
    </FunctionList> 
</Project> 
</Projects> 

我的代码是:

string fileFolderpath = Path.GetDirectoryName(Application.ExecutablePath) + "\\Config"; 
XmlDocument xDoc = new XmlDocument(); 
xDoc.Load(fileFolderpath + @"\FunctionTemplate.xml"); 
XmlNodeList xNode = xDoc.SelectNodes(String.Format("/Projects/Project [Name='{0}']/FunctionList/Function", "CELL")); 

我的节点列表中没有的项目运行之后。我的代码有什么问题吗?

任何帮助将是伟大的。

回答

2

我会用这个LINQ to XML

var xmlDocument = XDocument.Load("path"); 

var project = xmlDocument.Root 
      .Elements("Project") 
      .FirstOrDefault(p => (string)p.Element("Name") == "CELL"); 

if(project != null) 
{ 
    var functions = project.Descendants("Function"); 
} 
0

以下工作对我说:

var xml = @"<Projects> 
<Project> 
    <Name>CELL</Name> 
    <FunctionList> 
     <Function>guildline_addproperties</Function> 
     <Function>guildline_emptylaunchcondition</Function> 
     <Function>msi_setvolumelabel</Function> 
    </FunctionList> 
</Project> 
<Project> 
    <Name>AXA</Name> 
    <FunctionList> 
     <Function>guildline_addproperties</Function> 
     <Function>guildline_emptylaunchcondition</Function> 
     <Function>msi_setvolumelabel</Function> 
    </FunctionList> 
</Project> 
</Projects>"; 

      XmlDocument xDoc = new XmlDocument(); 
      xDoc.LoadXml(xml); 
      XmlNodeList xNode = xDoc.SelectNodes(String.Format(@"/Projects/Project[Name='{0}']/FunctionList/Function", "CELL")); 
      Assert.AreEqual(3, xNode.Count); 

,你一定要正确加载文件?