2013-05-21 37 views
0

嗨,我有一個XML,我希望它顯示在我的樹視圖在C#我如何獲得treeview`的xml參數值?

它的工作,但樹視圖不顯示我想看到的東西。

我試着解釋我的問題:

這裏是XML:

<?xml version="1.0" encoding="UTF-8"?> 
<LM-X STAT_VERSION="3.32"> 
<LICENSE_PATH TYPE="NETWORK" HOST="[email protected]" SERVER_VERSION="4.4.4" UPTIME="53 day(s) 21 hour(s) 10 min(s) 50 sec(s)"> 
FEATURE NAME="GlobalZoneEU" VERSION="12.0" VENDOR="ALTAIR" START="2013-03-26" END="2014-03-31" USED_LICENSES="111720" TOTAL_LICENSES="147000" SHARE="CUSTOM ,VIRTUAL"> 
<USER NAME="SYSTEM" HOST="LWSERV171" IP="172.16.11.115" USED_LICENSES="2000" LOGIN_TIME="2013-04-17 12:42" CHECKOUT_TIME="2013-04-17 12:42" SHARE_CUSTOM="hweuser:172.16.11.115"/> 
... 
</LICENSE_PATH> 
</LM-X> 

我想在我的樹狀結構如何:這是功能

GlobalZoneEU HWAIFPBS HWAWPF ...

這是我的C#代碼:

private void btnShowLicstate_Click(object sender, EventArgs e) 
{ 
    string command = "\"C:\\lmxendutil.exe\" -licstatxml -host lwserv005 -port 6200"; 

    string output = ExecuteCommand(command); 
    string final_output = output.Substring(90, output.Length-90); 

    XDocument doc = XDocument.Parse(final_output); 

    BuildTree(treeLic, doc); 


    txtOutput.Text = final_output; 
} 

static string ExecuteCommand(string command) 
{ 
    int exitCode; 
    ProcessStartInfo processInfo; 
    Process process; 

    processInfo = new ProcessStartInfo("cmd.exe", "/c " + command); 
    processInfo.CreateNoWindow = true; 
    processInfo.UseShellExecute = false; 
    processInfo.RedirectStandardError = true; 
    processInfo.RedirectStandardOutput = true; 

    process = Process.Start(processInfo); 

    string output = process.StandardOutput.ReadToEnd(); 
    exitCode = process.ExitCode; 

    process.Close(); 

    return output; 
} 

private void BuildTree(TreeView treeView, XDocument doc) 
{ 
    TreeNode treeNode = new TreeNode(doc.Root.Name.LocalName); 
    treeView.Nodes.Add(treeNode); 
    BuildNodes(treeNode, doc.Root); 
} 

private void BuildNodes(TreeNode treeNode, XElement element) 
{ 
    foreach (XNode child in element.Nodes()) 
    { 
     switch (child.NodeType) 
     { 
      case XmlNodeType.Element: 
       XElement childElement = child as XElement; 
       TreeNode childTreeNode = new TreeNode(childElement.Name.LocalName); 
       treeNode.Nodes.Add(childTreeNode); 
       BuildNodes(childTreeNode, childElement); 
       break; 
      case XmlNodeType.Text: 
       XText childText = child as XText; 
       treeNode.Nodes.Add(new TreeNode(childText.Value)); 
       break; 
     } 
    } 
} 

我怎樣才能獲得節點的名稱,例如--->

<FEATURE NAME="GlobalZoneEU" VERSION="12.0" VENDOR="ALTAIR" ...> 

我想唯一的名字......

回答

1

完全確定你想要什麼,但您是否在尋找

(string)childElement.Attributes("NAME") 

,而不是

childElement.Name.LocalName