Ich habe 2 Klasse von 2 verschiedenen xsd, einer von ihnen ist Kind-Knoten, die Wurzel-Klasse hat eine Eigenschaft (xmlelement Array) für das Kind, ich brauche den Kind-Knoten hat andere Präfix, das ist meine Code:Serialize XML mit verschiedenen Präfix
var xml = //this is the root xml
var nom = //this is the child node
var stream = new MemoryStream();
var xmlSerializeNomina = new XmlSerializer(typeof(ChildClass));
var xmlNameSpaceNom = new XmlSerializerNamespaces();
//Here add namespace because i need the prefix in child node
xmlNameSpaceNom.Add("childPrefix", "http://www.url.com/child");
var doc = new XmlDocument();
using (var writer = new XmlTextWriter(stream, Encoding.UTF8))
{
writer.Formatting = Formatting.Indented;
xmlSerializeNomina.Serialize(writer, nom, xmlNameSpaceNom);
stream.Seek(0, SeekOrigin.Begin);
doc.Load(stream);
}
//This is the xmlelement array property
xml.Complemento.Any = new XmlElement[] { doc.ImportNode(doc.DocumentElement, true) as XmlElement };
Dann serialisiert ich die Wurzel:
var xmlNameSpace = new XmlSerializerNamespaces();
xmlNameSpace.Add("rootPrefix", "http://www.url.com/foo");
xmlNameSpace.Add("nsPrefix", "http://www.url.com/foo");
xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
var urls += "http://www.url.com/foo http://www.url.com/root.xsd http://www.url.com/url_child http://www.url.com/url_child/child.xsd";
//Here add then child namespace because i need it in root node
xmlNameSpace.Add("childPrefix", "http://www.url.com/child");
xmlNameSpace.Add("schemaLocation", urls);
var xmlSerializeFactura = new XmlSerializer(typeof(RootClass));
using (var xmlTextWriter = new XmlTextWriter("pathAndName.xml", Encoding.UTF8))
{
xmlTextWriter.Formatting = Formatting.Indented;
xmlSerializeFactura.Serialize(xmlTextWriter, xml, xmlNameSpace);
}
die xML-Datei war in richtigen Format erstellen, aber das Kind root den Namensraum hat und ich brauche nicht dort, nur in Wurzelknoten .
<?xml version="1.0" encoding="utf-8"?>
<rootPrefix:Comprobante xmlns:schemaLocation="http://www.url.com/foo http://www.url.com/root.xsd http://www.url.com/child http://www.url.com/child/child.xsd" xmlns:nsPrefix="http://www.url.com/foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.url.com/foo http://www.url.com/root.xsd" xmlns:rootPrefix="http://www.url.com/foo">
<rootPrefix:tags>
Some more tags...
</rootPrefix:tags
<rootPrefix:Complemento>
'<!--' in this part is added the namespace, i don't need it here because i have already on root tag but if I don't add it this child tag haven't prefix '-->'
<childPrefix:Tag xmlns:childPrefix="http://www.url.com/child">
Some childs tags..
</childPrefix:Tag>
</rootPrefix:Complemento>
</rootPrefix:Comprobante>
Es ist nicht klar, was Sie hier fragen. Es wäre viel klarer, wenn Sie ein [mcve] zeigen und einbeziehen, wie Ihr XML aussieht, wie es Ihrer Meinung nach aussehen sollte. –
Sie haben Recht, ich habe mit einem Beispiel der XML bearbeitet. – elchente23
Ihr XML-Kommentar sagt "Ich habe bereits auf Root-Tag", aber Sie haben es nicht im Root-Element? –