2011-10-26 15 views
5

मैं सी # में System.Xml.Xmlwriter का उपयोग कर कई नामस्थान के साथ एक XML दस्तावेज बनाने के लिए कोशिश कर रहा हूँ और संकलन पर निम्न त्रुटि प्राप्त कर रहा हूँ:सी # एक्सएमएल - एक्सएमएल लेखक के साथ एकाधिक नाम स्थान घोषणा

'' उपसर्ग उसी प्रारंभ तत्व टैग के भीतर 'से' http://www.acme.com/BOF 'से फिर से परिभाषित नहीं किया जा सकता है।

मेरी कोड के पूरी तरह नीचे है:

 XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true }; 

     XmlWriter writer = XmlWriter.Create("C:\\ACME\\xml.xml", settings); 

     writer.WriteStartDocument(); 

     writer.WriteStartElement("BOF"); 
     writer.WriteAttributeString("xmlns", null, null, "http://www.acme.com/BOF"); //This is where I get my error 
     writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); 
     writer.WriteAttributeString("fileName", null, null, "test.xml"); 
     writer.WriteAttributeString("date", null, null, "2011-10-25"); 
     writer.WriteAttributeString("origin", null, null, "MYORIGIN"); 
     writer.WriteAttributeString("ref", null, null, "XX_88888"); 
     writer.WriteEndElement(); 

     writer.WriteStartElement("CustomerNo"); 
     writer.WriteString("12345"); 
     writer.WriteEndElement(); 

     writer.WriteEndDocument(); 

     writer.Flush(); 
     writer.Close(); 

क्या मैं गलत कर रहा हूँ?

धन्यवाद

जॉन

उत्तर

7
writer.WriteStartElement("BOF"); // write element name BOF, no prefix, namespace "" 
writer.WriteAttributeString("xmlns", null, null, "http://www.acme.com/BOF"); //Set namespace for no prefix to "http://www.acme.com/BOF". 

दूसरी पंक्ति, कोई मतलब नहीं है।

साथ writer.WriteStartElement("BOF", "http://www.acme.com/BOF")

3

आप WriteStartElement विधि करने के लिए अपने डिफ़ॉल्ट नाम स्थान पास करना चाहिए। क्योंकि तुम, डिफ़ॉल्ट (कोई उपसर्ग) यह क्या है के अलावा कुछ करने के लिए नाम स्थान बताए रहे हैं एक ही स्थान पर के रूप में यह है कि है

0
writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); 

रूप

writer.WriteAttributeString("xsi", "http://www.w3.org/2000/xmlns/", "http://www.w3.org/2001/XMLSchema-instance"); 

उस मामले उपसर्ग xsi एक्सएमएल नाम की मेज पर पंजीकृत किया गया है में लिखा जाना चाहिए उन दो पंक्तियों बदलें। बाद में http://www.w3.org/2001/XMLSchema-instance का उपयोग ns पैरामीटर XmlWriter की विधि पर xsi के एक्सएमएल नेमस्पेस उपसर्ग को प्रीपेड करेगा।

एक्सएमएल नेमस्पेस के यूआरआई xsi निरंतर System.Xml.Schema.XmlSchema.InstanceNamespace द्वारा .NET पर भी उपलब्ध है।