【发布时间】:2013-01-29 20:56:37
【问题描述】:
我遇到了一个问题,我将多个 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();
}
}
感谢任何帮助
【问题讨论】:
-
在语义上,重新排序 xml 属性时没有区别。为什么会出现这个问题?
-
您知道实际输出和预期输出在语义上是相同的,因为属性的顺序在 Xml 中是不相关的,对吧?
-
在我看来,在某些时候会涉及到 XML 解析器。
-
@spender 没错,但这根本不能回答他的问题——我认为这是为了找出发生这种情况的原因。如果它以相同的无序顺序写入属性,那么它可能没问题,但如果它每次都不同,则会影响他输出到的任何内容的可读性。
-
当前示例代码不太可能重新排序 XML 属性。它可能导致创建无效的 XML 作为结果(即,如果碰巧将 XML 与不同的编码合并或忘记打开/关闭标签)。正如@Cyborgx37 指出的那样,该行为最可能的原因是发生了 XML 解析/生成,并且属性按设计任意排序,而不是合并文件。
标签: c# xml filestream