我试图用特定格式序列化对象(在这种情况下为类)。
我得到这样的东西:
<ns:pay xmlns:ns="http://example.uri.here">
<ns:Payment>
<ns:customerKeyValue>5555</ns:customerKeyValue>
<ns:bankCode>BBBB</ns:bankCode>
<ns:paymentAmount>456</ns:paymentAmount>
<ns:paymentCategory>KD</ns:paymentCategory>
<ns:paymentMode>AC</ns:paymentMode>
<ns:referenceNumber>123A</ns:referenceNumber>
<ns:userID>Test2</ns:userID>
<ns:invoiceNumber>61</ns:invoiceNumber>
</ns:Payment>
</ns:pay>
我有具有每个元素的类,但是当我对其进行序列化时,它将其转换为以下格式:
<?xml version="1.0"?>
<ns_x003A_pay xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.uri.here">
<CustomerKeyValue>5555</CustomerKeyValue>
<BankCode>BBBB</BankCode>
<PaymentAmount>456</PaymentAmount>
<PaymentCategory>KD</PaymentCategory>
<PaymentMode>AC</PaymentMode>
<ReferenceNumber>123A</ReferenceNumber>
<UserID>Test2</UserID>
<InvoiceNumber>61</InvoiceNumber>
</ns_x003A_pay>
所以有人可以帮我吗?
我用来转换成xml的方法是这样的:
public static string SerializeToXMLString(object ObjectToSerialize)
{
MemoryStream mem = new MemoryStream();
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(ObjectToSerialize.GetType());
ser.Serialize(mem, ObjectToSerialize);
ASCIIEncoding ascii = new ASCIIEncoding();
return ascii.GetString(mem.ToArray());
}
注意:
指定名称空间和类名,我正在使用此:
[XmlRootAttribute(“ ns:pay”,命名空间=“ http://example.uri.here”)]
在课堂里
如果您没有注意到,每个XML元素都以
感谢您的帮助。
最佳答案
好的,我刚刚在这里找到了问题的答案,我在这里写信是为了帮助有这个问题的人:
public static string SerializeToXMLString(object ObjectToSerialize)
{
//
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("ns", "http://example.uri.here");
//
//
XmlSerializer serializer = new XmlSerializer(ObjectToSerialize.GetType());
XmlWriterSettings writerSettings = new XmlWriterSettings();
writerSettings.OmitXmlDeclaration = true;
StringWriter stringWriter = new StringWriter();
using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, writerSettings))
{
serializer.Serialize(xmlWriter, ObjectToSerialize,ns);
}
return stringWriter.ToString();
}
解决前缀:
我创建了XmlSerializerNamespaces对象,并添加了所需的前缀和名称空间。
解决ns:pay ns:pay
我创建了两个类:付款和付款。
在薪酬类别中,我添加了以下内容:
[XmlRoot(“ pay”,命名空间=“ http://example.uri.here”)]
在付款类别中,我添加了以下内容:
[XmlRoot(“ pay”)]
工资类别具有付款类型的属性。以这种风格创建xml:
<ns:pay>
<ns:payment
element here
</ns:payemnt>
</ns:pay>
感谢大伙们。抱歉,我问了差不多30分钟后就发现了问题。
关于c# - 以特定格式将对象序列化为XML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3301783/