Joh*_*ohn 9 c# xml asp.net-mvc xml-serialization
我正在将我的ASP.net MVC程序中的对象序列化为像这样的xml字符串;
StringWriter sw = new StringWriter();
XmlSerializer s = new XmlSerializer(typeof(mytype));
s.Serialize(sw, myData);
Run Code Online (Sandbox Code Playgroud)
现在这给我这个前两行;
<?xml version="1.0" encoding="utf-16"?>
<GetCustomerName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Run Code Online (Sandbox Code Playgroud)
我的问题是,在序列化时如何更改xmlns和编码类型?
谢谢
我发现的工作是将这一行添加到我的班级,
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://myurl.com/api/v1.0", IsNullable = true)]
Run Code Online (Sandbox Code Playgroud)
并在我调用serialize时将其添加到我的代码中以添加命名空间
XmlSerializerNamespaces ns1 = new XmlSerializerNamespaces();
ns1.Add("", "http://myurl.com/api/v1.0");
xs.Serialize(xmlTextWriter, FormData, ns1);
Run Code Online (Sandbox Code Playgroud)
只要两个命名空间匹配,它就能很好地工作.
该XmlSerializer类型在其构造函数中有第二个参数,它是默认的xml命名空间 - "xmlns:"命名空间:
XmlSerializer s = new XmlSerializer(typeof(mytype), "http://yourdefault.com/");
Run Code Online (Sandbox Code Playgroud)
要设置编码,我建议您使用XmlTextWriter而不是直接StringWriter创建它,如下所示:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
XmlTextWriter xtw = XmlWriter.Create(filename, settings);
s.Serialize(xtw, myData);
Run Code Online (Sandbox Code Playgroud)
在XmlWriterSettings,您可以定义过多的选项 - 包括编码.
| 归档时间: |
|
| 查看次数: |
12697 次 |
| 最近记录: |