如何序列化一个C#对象转换为XML架构没有信息? [英] How to serialize an c# object into xml without schema info?
问题描述
这是我做过什么:
一个Serializable类:
A Serializable class:
[Serializable()]
public class Ticket
{
public string CitationNumber { get; set; }
public decimal Amount { get; set; }
}
然后序列化模型转换成XML:
Then serialize a model into xml:
var model = cart.Citations
.Select(c => new Ticket(c.Number, c.Amount)).ToList();
var serializer = new XmlSerializer(typeof (List<Ticket>));
var sw = new StringWriter();
serializer.Serialize(sw, model);
return sw.ToString();
输出 sw.ToString()
是像
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfTicket xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Ticket>
<CitationNumber>00092844</CitationNumber>
<Amount>20</Amount>
</Ticket>
</ArrayOfTicket>
有没有一种方法来定制序列化()
输出除去像那些架构信息:<?code>< XML版本=1.0编码=UTF-16> 和的xmlns :XSI =http://www.w3.org/2001/XMLSchema-instance的xmlns:XSD =http://www.w3.org/2001/XMLSchema
Is there a way to customize the Serialize()
output to remove those schema info like: <?xml version="1.0" encoding="utf-16"?>
and xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
?
和如何更改根元素 ArrayOfTicket
成别的东西?
And how can I change the root element ArrayOfTicket
into something else?
我必须与输出控制?
推荐答案
您需要一些XML技巧...
You need a few xml tricks...
var serializer = new XmlSerializer(typeof(List<Ticket>));
var ns = new XmlSerializerNamespaces();
ns.Add("", "");
var sw = new StringWriter();
var xmlWriter = XmlWriter.Create(sw, new XmlWriterSettings() { OmitXmlDeclaration = true });
serializer.Serialize(xmlWriter, model, ns);
string xml = sw.ToString();
输出:
Output:
<ArrayOfTicket>
<Ticket>
<CitationNumber>a</CitationNumber>
<Amount>1</Amount>
</Ticket>
<Ticket>
<CitationNumber>b</CitationNumber>
<Amount>2</Amount>
</Ticket>
</ArrayOfTicket>
的 PS:我添加缩进= TRUE
到 XmlWriterSettings
来得到上面的输出的
PS: I added Indent = true
to XmlWriterSettings
to get the above output
这篇关于如何序列化一个C#对象转换为XML架构没有信息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!