Ich bin die Klasse in ein bestimmtes XML-Format serialisieren. Unten ist die Klassenstruktur & Code, den ich verwendet habe, um es zu serialisieren. Seralisierte Dateien übersehen häufig den Elementnamen "Adresse".C# XML-Serialisierung - Namespace-Problem mit referenziertem Schema
Ich habe 3 Klassen StudentInfo, die zwei Eigenschaften des Typs "Student" & "Adresse"
[Serializable]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlRoot("StudentInfo", Namespace = "http://TestBizTalkMap.Student")]
public class StudentInfo
{
[System.Xml.Serialization.XmlElement("", Namespace = "")]
public Student Student { get; set; }
[System.Xml.Serialization.XmlElement("ns1", Namespace = "ns1:http://TestBizTalkMap.Address")]
public Address Address { get; set; }
}
[Serializable]
public class Student
{
public string EnrollNo { get; set; }
public string Name { get; set; }
public string BTSReceivedOn { get; set; }
}
[Serializable]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlRoot("Address", Namespace = "http://TestBizTalkMap.Address")]
public class Address
{
[XmlElement("",Namespace="")]
public string City { get; set; }
[XmlElement("", Namespace = "")]
public string State { get; set; }
}
-Code es gebraucht hat, um zu serialze:
public XmlDocument GetXMLSchema<T>(T type, string schemeNameSpace)
{
XmlDocument xmlDoc = new XmlDocument();
XmlSerializer xmlSerializer = new XmlSerializer(type.GetType());
try
{
using (MemoryStream xmlStream = new MemoryStream())
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("ns0", schemeNameSpace);
xmlSerializer.Serialize(xmlStream, type, ns);
xmlStream.Position = 0;
xmlDoc.Load(xmlStream);
if (xmlDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
{
xmlDoc.RemoveChild(xmlDoc.FirstChild);
}
}
}
catch (Exception ex)
{
throw ex;
}
return xmlDoc;
}
es es als
serialisiert<ns0:StudentInfo xmlns:ns0="http://TestBizTalkMap.Student">
<Student>
<EnrollNo>EnrollNl</EnrollNo>
<Name>Name</Name>
<BTSReceivedOn>BTSReceivedOn</BTSReceivedOn>
</Student>
<ns1 xmlns="http://TestBizTalkMap.Address">
<City>City</City>
<State>State</State>
</ns1>
</ns0:StudentInfo
Während ich möchte es als
0 serialisiert bekommen<ns0:StudentInfo xmlns:ns0="http://TestBizTalkMap.Student">
<Student>
<EnrollNo>EnrollNo_0</EnrollNo>
<Name>Name_0</Name>
<BTSReceivedOn>BTSReceivedOn_0</BTSReceivedOn>
</Student>
<ns1:Adress xmlns:ns1="http://TestBizTalkMap.Address">
<City>City_0</City>
<State>State_0</State>
</ns1:Adress>
</ns0:StudentInfo>
Irgendwelche Hilfe?
Dank
Haben Sie versucht, 'XmlElement (" ns1 ", Namespace =" ... ")' zu 'XmlElement (" Adresse ", Namespace =" ... ")' in der Address-Eigenschaft zu ändern? Scheint ziemlich offensichtlich, dachte aber, ich würde nachsehen –