我试图用特定格式序列化对象(在这种情况下为类)。
我得到这样的东西:

<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/

10-11 22:53