2014-07-22 127 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); 

,你一定要正確加載文件?