0

我遇到了一个问题,我将几个 xml 文件的内容写入一个文件。当我运行程序时,输出格式正确,但单词乱序。一个例子:

我的字符串是"<s:AttributeType name=\"Shift\" number=\"34\" nullable=\"true\" writeunknown=\"true\">"

所以它应该打印<s:AttributeType name="Shift" number="34" nullable="true" writeunknown="true">

但反而<s:AttributeType name="Shift" writeunknown="true" number="34" nullable="true">

被退回。

一些文件是使用File.WriteAllText(@"C:\Users\status.xml", xsh); 其中'xsh'是一个包含字符串的变量写入的。

其余部分使用此循环编写:

 foreach (var i in Numbers.GetWSnumber())
        {
            string contents = "";
            string curFile = @"\\production\public\Staus\TStatus\WS" + i.SetId + ".xml";
            if (File.Exists(curFile))
            {
                System.IO.StreamReader file = new System.IO.StreamReader(curFile);
                while ((contents = file.ReadLine()) != null)
                {
                    using (StreamWriter sw = File.AppendText(@"C:\Users\status.xml"))
                    {
                        sw.WriteLine(contents);
                    }   


                }
                file.Close();
            }
        }

任何帮助表示赞赏

4

1 回答 1

0

XML 属性的顺序并不重要,所以我不会担心。但是,如果它真的让您烦恼,我建议您移动您的 using 语句。

using (StreamWriter sw = File.AppendText(@"C:\Users\status.xml"))
{
    sw.WriteLine(contents);
}

尽管这可能已经过优化,因此它的工作方式与编写得更好时一样,但您当前拥有它的方式StreamWriter是分配新的,然后在每次迭代时处理掉。

您的 using 语句应该包装while循环,而不是相反。这可能会解决问题(尽管我认为不太可能),因为我不知道编译器是如何处理这一行的。无论哪种方式,都值得改变。

于 2013-01-29T21:28:00.233 回答