Question

I'm not able to get my expected result. Look at my C# code I am adding the second attribute "xsi:noNamespaceSchemaLocation" , But the word "xsi:" is missing in the outerXml. Where I'm failing?

c# :

   XmlDocument doc = new XmlDocument();
   using (XmlWriter writer = doc.CreateNavigator().AppendChild())
    {
        new XmlSerializer(oWrite.GetType()).Serialize(writer, oWrite);
    }
   doc.DocumentElement.RemoveAllAttributes() ;
   XmlAttribute xmlAtri1,xmlAtri2;         
   xmlAtri1 = doc.CreateAttribute("xmlns:xsi");
   xmlAtri1.Value = "http://www.w3.org/2001/XMLSchema-instance";  
   doc.FirstChild.FirstChild.Attributes.Append(xmlAtri1);
   xmlAtri2 = doc.CreateAttribute("xsi:noNamespaceSchemaLocation");
   xmlAtri2.Value = "../xsd/nikuxog_customObjectInstance.xsd";
   doc.FirstChild.FirstChild.Attributes.Append(xmlAtri2);          
   return doc.DocumentElement  ;

Outer XML :

<WriteCustomObjectInstance>
  <NikuDataBus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="../xsd/nikuxog_customObjectInstance.xsd">
    <Header externalSource="NIKU" version="13.1.0.0248" />
    <customObjectInstances objectCode="web_req">
    </customObjectInstances>
  </NikuDataBus>
</WriteCustomObjectInstance>

Expected XML :

<WriteCustomObjectInstance>
   <NikuDataBus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/nikuxog_customObjectInstance.xsd">
    <Header externalSource="NIKU" version="13.1.0.0248" />
    <customObjectInstances objectCode="web_req">
    </customObjectInstances>
  </NikuDataBus>
</WriteCustomObjectInstance>

Thanks,
JP

Was it helpful?

Solution

Try like this -

   doc.DocumentElement.RemoveAllAttributes() ;
   var xsi = "http://www.w3.org/2001/XMLSchema-instance";
   XmlAttribute xmlAtri1;         
   xmlAtri1 = doc.CreateAttribute("xmlns:xsi");
   xmlAtri1.Value = xsi;  
   doc.FirstChild.FirstChild.Attributes.Append(xmlAtri1);
   xmlAtri1 = doc.CreateAttribute("noNamespaceSchemaLocation", xsi);
   xmlAtri1.Value = "../xsd/nikuxog_customObjectInstance.xsd";
   doc.FirstChild.FirstChild.Attributes.Append(xmlAtri1); 

For details check this link -

Creating XMLDocument throguh code in asp.net

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top