我将此代码用于SerializeXML String:
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings
{
indent = true,
Encoding = Encoding.UTF8
};
using (var sw = new StringWriter())
{
using (XmlWriter xmlWriter = XmlWriter.Create(sw, xmlWriterSettings))
{
XmlSerializer xmlSerializer = new XmlSerializer(moviesObject.GetType(), new XmlRootAttribute("category"));
xmlSerializer.Serialize(xmlWriter, moviesObject);
}
return sw.ToString();
}
Run Code Online (Sandbox Code Playgroud)
问题是我得到:
<?xml version="1.0" encoding="utf-16"?>
<category xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" havemore="no">
<items>
<movie>
<videoid>videoid1</videoid>
<title>title1</title>
</movie>
</items>
</category>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以改变<?xml version="1.0" encoding="utf-16"?>
到
<?xml version="1.0" encoding="utf-8"?>?
我已经正确定义了一个类,并在将其序列化为XML后,我没有编码.
如何定义编码"ISO-8859-1"?
这是一个示例代码
var xml = new XmlSerializer(typeof(Transacao));
var file = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "transacao.xml"),FileMode.OpenOrCreate);
xml.Serialize(file, transacao);
file.Close();
Run Code Online (Sandbox Code Playgroud)
这是xml生成的开始
<?xml version="1.0"?>
<requisicao-transacao xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dados-ec>
<numero>1048664497</numero>
Run Code Online (Sandbox Code Playgroud) 为什么这样有效:
using (var ms = new MemoryStream())
{
using (var dummy = new StreamWriter(ms))
{
var sw = new StreamWriter(ms);
sw.WriteLine("Hello World");
sw.Flush();
using (StreamReader rdr = new StreamReader(ms))
{
ms.Position = 0;
textBoxExc.Text = rdr.ReadToEnd();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用("无法访问封闭的流."):只有差异var dummy = XmlWriter.Create(ms)而不是var dummy = new StreamWriter(ms)
using (var ms = new MemoryStream())
{
using (var dummy = XmlWriter.Create(ms))
{
var sw = new StreamWriter(ms);
sw.WriteLine("Hello World");
sw.Flush();
using (StreamReader rdr = new StreamReader(ms))
{
ms.Position = …Run Code Online (Sandbox Code Playgroud)