Sam*_*Sam 3 c# xml serialization xml-serialization linq-to-xml
Person person = GetPerson();
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(string.Empty, string.Empty);
XmlSerializer serializer = new XmlSerializer(typeof(Person));
string personText = string.Empty;
using (MemoryStream memoryStream = new MemoryStream())
{
using (XmlWriter xmlWriter = XmlWriter.Create(memoryStream, new XmlWriterSettings() { Encoding = Encoding.UTF8 }))
{
serializer.Serialize(xmlWriter, person, ns);
xmlWriter.Flush();
personText = Encoding.UTF8.GetString(memoryStream.ToArray());
}
}
string path = @"D:\person.xml";
// Write method 1:
File.WriteAllText(path, personText);
// Write method 2:
using (StreamWriter streamWriter = new StreamWriter(path, false , Encoding.UTF8))
{
streamWriter.Write(personText);
}
// Read the xml
using (FileStream fileStream = new FileStream(path, FileMode.Open))
{
return XDocument.Load(XmlReader.Create(fileStream));
}
Run Code Online (Sandbox Code Playgroud)
当我使用方法2写入后读取xml时,我在根级别获取此数据无效.第1行,位置1.但是使用方法1可以正常工作.
是什么造成的?任何指针赞赏.
问题是,无论是StreamWriter 和的XmlWriter添加了一个字节顺序标记.
选项:
personText开始new UTF8Encoding(false)而不是Encoding.UTF8为了StreamWriternew UTF8Encoding(false)而不是Encoding.UTF8为了XmlWriterMemoryStream,为什么不直接转储是磁盘?| 归档时间: |
|
| 查看次数: |
629 次 |
| 最近记录: |