文本框字符串到xml问题

时间:2013-10-14 22:16:48

标签: c# xml formatting read-write

我在使用Windows窗体应用程序中的C#代码格式化我的xml文件时遇到了一些问题。这是我正在为这个项目使用的代码:

private void btnSend_Click(object sender, EventArgs e)
    {
        string _name = tbName.ToString();
        string _st = tbSt.ToString();
        string _dx = tbDx.ToString();
        string _iq = tbIq.ToString();
        string _filename = @"c:\Add.xml";

        if (File.Exists(_filename))
        {
            XDocument xDoc = XDocument.Load(_filename);
            xDoc.Root.Add(new XElement("character",                                
                            new XElement("name", _name),
                            new XElement("st", _st),
                            new XElement("dx", _dx),
                            new XElement("iq", _iq)
                        ));
            xDoc.Save(_filename);
        }

        else if (!File.Exists(_filename))
        {

            XmlDocument doc = new XmlDocument();
            XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
            doc.AppendChild(docNode);

            XmlNode productsNode = doc.CreateElement("characters");
            doc.AppendChild(productsNode);

            XmlNode productNode = doc.CreateElement("character");
            productsNode.AppendChild(productNode);
            XmlNode nmNode = doc.CreateElement("name");
            nmNode.AppendChild(doc.CreateTextNode(_name));
            productNode.AppendChild(nmNode);
            XmlNode stNode = doc.CreateElement("st");
            stNode.AppendChild(doc.CreateTextNode(_st));
            productNode.AppendChild(stNode);
            XmlNode dxNode = doc.CreateElement("dx");
            dxNode.AppendChild(doc.CreateTextNode(_dx));
            productNode.AppendChild(dxNode);
            XmlNode iqNode = doc.CreateElement("iq");
            iqNode.AppendChild(doc.CreateTextNode(_iq));
            productNode.AppendChild(iqNode);

            doc.Save(@"c:\Add.xml");//must have to save

        }
    }

问题是我的.xml文件带有附加的整个TextBox类前缀,如下所示:

...

- <character>
    <name>System.Windows.Forms.TextBox, Text: bob</name> 
    <st>System.Windows.Forms.TextBox, Text: 10</st> 
    <dx>System.Windows.Forms.TextBox, Text: 12</dx> 
    <iq>System.Windows.Forms.TextBox, Text: 08</iq> 
</character>

我希望看起来像这样:

- <character>
    <name>bob</name> 
    <st>10</st> 
    <dx>12</dx> 
    <iq>08</iq> 
</character>

如果你们中任何一位知识渊博的人都能伸出援助之手(或指向我的链接),我会很感激。我确实通过谷歌进行了梳理,但没有发现这个特殊的奇怪问题。非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

显而易见的我没有看到。感谢那些可能回应的人。现在我发布了它,很明显。

更改

string _name = tbName.ToString();

简单地

string _name = tbName.Text;

当然解决了这个问题。希望这可以帮助别人。