0

こんにちは、ツリービューの xml ファイルと同じ構造を持つ文字列を使用する方法を教えてください。たとえば、ここに文字列コンテンツの一部があります..

<?xml version="1.0" encoding="UTF-8"?>
<LM-X STAT_VERSION="3.32">
<LICENSE_PATH TYPE="NETWORK" HOST="6200@serv005" SERVER_VERSION="4.4.4" UPTIME="53 day(s) 23 hour(s) 0 min(s) 3 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="SERV171" 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"/>
>
....

これは単なる文字列です。

この文字列を xml ファイルとして使用したいのですが、この文字列を (仮想) xml に変換して、ツリービューに FEATURE または USER のノードを入力することはできますか?

私のC#コード:

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

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

            // here i want to parse the string in a xml format string xD and load this in    the       treeview

           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; 
        }
4

2 に答える 2

1

XDocumentクラスを使用します。XDocument.Parse(String) または XDocument.Load(Path) を使用して String から作成できます。

次に、次の関数を使用してツリー ビュー ( http://social.msdn.microsoft.com/forums/...にあります)にデータを入力します。

    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;
            }
        }
    }
}
于 2013-05-21T11:53:43.690 に答える
0

xml ドキュメントをツリービューにバインドする例を次に示します。

// we cannot bind the TreeView directly to an XmlDocument
// so we must create an XmlDataSource and assign the XML text
XmlDataSource XDdataSource = new XmlDataSource();
XDdataSource.ID = DateTime.Now.Ticks.ToString();  // unique ID is required
XDdataSource.Data = XDoc.OuterXml;

// we want the full name displayed in the tree so 
// do custom databindings
TreeNodeBinding Binding = new TreeNodeBinding();
Binding.TextField = "FullName";
Binding.ValueField = "ID";
TreeView1.DataBindings.Add(Binding);

// Hook up the XmlDataSource to the TreeView
TreeView1.DataSource = XDdataSource;
TreeView1.DataBind();
于 2013-05-21T12:02:37.683 に答える