我试图用特定的fomat序列化一个对象(在这种情况下是一个类)。 我有这样的事情:
<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”,Namespace =“http://example.uri.here”)] 在课堂上
如果您没有注意到每个XML元素都以
谢谢你的帮助。
答案 0 :(得分:4)
好的家伙我刚刚在这里找到了我的问题的答案,我写这里是为了帮助解决这个问题的人:
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:付款 我创建了两个类:付款和支付。
在薪酬课程中我添加了这个: [XmlRoot(“pay”,Namespace =“http://example.uri.here”)]
在付款类中,我添加了以下内容: [XmlRoot( “支付”)]
Pay Class有付款类型的财产。用这种风格创建xml:
<ns:pay>
<ns:payment
element here
</ns:payemnt>
</ns:pay>
谢谢你们。对不起,我询问并在询问后差不多30分钟找到了这个问题。
答案 1 :(得分:0)
还有LINQtoXSD(不是XmlSerializer,当然: - )