2016-10-19 2 views
0

Ich habe eine XML structer wie dieAnfügen serialisierten Objekt in XML in C#

<?xml version="1.0" encoding="utf-8"?> 
<Product> 
    <ProductName>da</ProductName> 
    <PluginPath></PluginPath> 
    <Instances></Instances> 
</Product> 

und i serialisiert mein Objekt zu bespannen.

<?xml version="1.0"?> 
<Instance xmlns:xsi="http://bla bla" xmlns:xsd="bla bla" UniqueId="d4820029b7d7"> 
<InstanceName>Instance MyTestPluginForm</InstanceName> 
<Description>Test Plugin IW</Description> 
<AddedDate>2016-10-19T11:05:10.7443404+02:00</AddedDate> 
<LogSettings> 
<LoggingLevel>None</LoggingLevel> 
<LogFilePath /><MaximumSize>100</MaximumSize 
<ClearAfterDays>7</ClearAfterDays> 
<IsSaveActiviesToEventLog>false</IsSaveActiviesToEventLog> 
</LogSettings> 
<ProductSpecific/> 
</Instance> 

Also ich möchte die zweite in den Instances-Knoten in der ersten XML-Datei anhängen. Aber wie Sie sehen, hat beide Xml-Definition auf der Oberseite und nach Serializazion bekam ich Xmlns: Xsi und Xmlns: Xsd Attribute.

Wie löst man dieses Problem?

PS: Ich möchte keine XML-Elemente erstellen. Weil mein XML-Schema dynamisch ist. Es muss mit der Serialisierung gemacht werden. (Ich habe bereits this Probe überprüft)

+0

Bitte geben Sie Code, den Sie ausprobiert haben. –

+0

Vielen Dank für Ihr Interesse. Ich habe es gelöst und es funktioniert gut. – unbalanced

Antwort

0

Ich löste das Problem. Verwenden Sie den Code here

public static void CreateXmlFile(Instance instance, string filePath) 
    { 

     var xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Product><ProductName>da</ProductName><PluginPath></PluginPath><Instances></Instances></Product>"; 



     XmlDocument xmlDocument = new XmlDocument(); 
     xmlDocument.LoadXml(xml); 
     xmlDocument.Save(filePath); 


     XmlNode xnode = xmlDocument.CreateNode(XmlNodeType.Element, "Instances", null); 
     XmlSerializer xSeriz = new XmlSerializer(typeof(Instance)); 
     XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); 
     ns.Add("", ""); 
     XmlWriterSettings writtersetting = new XmlWriterSettings(); 
     writtersetting.OmitXmlDeclaration = true; 
     StringWriter stringwriter = new StringWriter(); 
     using (XmlWriter xmlwriter = System.Xml.XmlWriter.Create(stringwriter, writtersetting)) 
     { 
      xSeriz.Serialize(xmlwriter, instance, ns); 
     } 
     xnode.InnerXml = stringwriter.ToString(); 
     XmlNode bindxnode = xnode.SelectSingleNode("Instance"); 
     xmlDocument.DocumentElement.SelectSingleNode("Instances").AppendChild(bindxnode); 
     xmlDocument.Save(filePath); 

    } 
Verwandte Themen