从txt文件读取字符串并使用c#将其转换为xml中的元素

时间:2016-04-13 00:19:31

标签: c# xml

我在txt文件中有一个像{ {Name Mike} {age 19} {gender male}}这样的字符串。 我想将此转换为xml作为以下输出。因为我是新手,对我来说似乎很怀疑。

<name>Mike</name>
<age>19</age>
<gender>male</male>

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是我的解决方案,首先你需要创建一个xml文件,我已经在我的bin文件夹中创建了x.xml,并且必须在xml文件上创建root元素,在我的情况下在下面的begening示例xml,root元素名称可以是任何内容,我只使用了root

<root>
</root>

然后编写你的字符串代码如下

            string s = "{{Name Mike} {age 19} {gender male}}";
            string[] s2 = s.Replace("{", "").Replace("}", "").Split(' ');
            for (int i = 0; i < s2.Length; i++)
            {

                XDocument doc = XDocument.Load("x.xml");
                XElement rt = doc.Element("root");
                XElement elm = rt.Element(s2[i]);

                if (elm != null)
                {
                    elm.SetValue(s2[i + 1]);
                }
                else
                {
                    XElement x = new XElement(s2[i], s2[i + 1]);
                    rt.Add(x);
                }

                doc.Save("x.xml");
                i++;
            }

希望这能解决您的问题

<强>更新

如果你想自动创建文件而不用手工创建xml文件那么你可以这样做

            string s = "{{Name Mike} {age 19} {gender male}}";
            string[] s2 = s.Replace("{", "").Replace("}", "").Split(' ');

            if (!File.Exists("x.xml"))
            {
                TextWriter tw = new StreamWriter("x.xml", true);
                tw.WriteLine("<root>\n</root>");
                tw.Close();
            }

            for (int i = 0; i < s2.Length; i++)
            {

                XDocument doc = XDocument.Load("x.xml");
                XElement rt = doc.Element("root");
                XElement elm = rt.Element(s2[i]);

                if (elm != null)
                {
                    elm.SetValue(s2[i + 1]);
                }
                else
                {
                    XElement x = new XElement(s2[i], s2[i + 1]);
                    rt.Add(x);
                }

                doc.Save("x.xml");
                i++;
            }
相关问题