【发布时间】:2016-11-16 11:22:54
【问题描述】:
我的应用程序从 web 服务中获取一些像这样的 xml 文件:
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<person>
<!— some elements here —>
</person>
<person>
<!— some elements here —>
</person>
</root>
我将所有这些文件合并到一个文件中,以便在一个根元素下加入所有人员。如果我使用这样的代码:
var readers = files.Select(XmlReader.Create).ToList();
var writer = XmlWriter.Create("final.xml");
...
writer.WriteStartDocument();
writer.WriteStartElement("root");
foreach (var reader in readers)
{
reader.MoveToContent();
reader.Read();
while (!reader.EOF)
{
string elementName = reader.Name;
if (elementName.Equals("person", StringComparison.OrdinalIgnoreCase))
{
writer.WriteNode(reader, false);
}
else
{
reader.Read();
}
}
}
writer.WriteEndElement();
writer.WriteEndDocument();
...
//dispose all readers and writers
它工作正常,在最终文件中,我在 xml 序言中有 utf-8。但如果我创建这样的读者:
var readers = files.Select(x => XmlReader.Create(new StreamReader(x))).ToList();
我在 xml prolouge 中有相同的 utf-8,但最终文件中有损坏的数据。例如,不是符号 å 我有�。我试图找出这个问题的原因阅读Joel's article about encodings,但没有结果。为什么它会这样工作?
【问题讨论】: