2012-06-14 20 views
5

मैं कुछ इस तरह उत्पन्न करने के लिए की जरूरत है:एक्सएमएल क्रमबद्धता + नेमस्पेस (सी #)

<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 
<Header> 
... 
</Header> 
</AmazonEnvelope> 

मैं कुछ इस तरह की कोशिश कर रहा था, लेकिन यह पूरी तरह से सही ढंग से नहीं है:

XmlSerializerNamespaces nms = new XmlSerializerNamespaces(); 
     nms.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
     nms.Add("noNamespaceSchemaLocation", "amzn-envelope.xsd"); 



     XmlSerializer serializer = new XmlSerializer(typeof(XMLAmazonEnvelope)); 
     StreamWriter writer = new StreamWriter(path); 

     serializer.Serialize(writer, objectToSave,nms); 
     writer.Close(); 

और परिणाम है:

<?xml version="1.0" encoding="utf-8"?> 
<xsi:AmazonEnvelope xmlns:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<xsi:Header> 
... 
</xsi:Header> 
</xsi:AmazonEnvelope> 

और यह वही नहीं है जो मैं चाहता हूं। कोई विचार, अलग-अलग क्या किया जाना चाहिए?

+1

'xsi: noNamespaceSchemaLocation =" AMZN-envelope.xsd "' एक नाम स्थान घोषणा नहीं है। आपको 'xsi' नेमस्पेस में 'अमेज़ॅनएन्फेल्डे' तत्व में 'नो नेमस्पेसशस्मालाक्शन' विशेषता जोड़नी होगी, लेकिन जब तक आपको 'XMLAmazonEnvelope' के स्रोत तक पहुंच नहीं है, तब तक मुझे दस्तावेज़ में ऐसा करने का एक सीधा तरीका नहीं दिख सकता है। '। उस स्थिति में आप 'नो XamesAttribute]' नाम से उस श्रेणी में फ़ील्ड/प्रॉपर्टी जोड़ सकते हैं जिसका नाम 'नोनामस्पेस स्केमालाक्शन' नाम और वह मूल्य है जिसे आप चाहते हैं। – millimoose

+0

या शायद 'XmlAttributeOverrides' का उपयोग करके स्रोत तक पहुंच के साथ संभव है, लेकिन मुझे नहीं पता कि यह एपीआई कैसे काम करता है। – millimoose

+0

XmlAttribute केवल फ़ील्ड, गुण, अनुक्रमणिका के लिए अनुमति देता है और मेरे पास है: – user1359657

उत्तर

संबंधित मुद्दे