मेरे XML विशेषता में एक नाम स्थान उपसर्ग क्यों जोड़ा जा रहा है?
मैं यहाँ एक बेला है :
using System;
using System.Xml;
using System.IO;
using System.Text;
public class Program
{
public static void Main()
{
Console.WriteLine("Starting");
MemoryStream stream = new MemoryStream();
var utf = new UTF8Encoding(false);
XmlTextWriter writer = new XmlTextWriter(stream, utf);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteProcessingInstruction("process", "5");
writer.WriteComment("commenting");
writer.WriteStartElement("dog");
writer.WriteAttributeString("attribute", "www.windward.net", "5");
writer.WriteStartElement("cat");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
string result = utf.GetString(stream.ToArray(), 0, (int) stream.Length);
Console.WriteLine("XML: " + result);
}
}
मैं एक उपसर्ग नामस्थान के साथ एक विशेषता जोड़ रहा हूं। यह एक उपसर्ग का निर्माण कर रहा है d1p1
।
क्यों?
जवाब
कोड-स्तरीय उत्तर
चूंकि
writer.WriteAttributeString("attribute", "www.windward.net", "5");
स्थानों attribute
में www.windward.net
और नाम स्थान उपसर्ग संघ बनाने के लिए उपयोग किया जाता है।
यदि आप attribute
किसी नामस्थान में रहना चाहते हैं , तो "www.windward.net"
नामस्थान तर्क को हटा दें :
writer.WriteAttributeString("attribute", "5");
एक्सएमएल-स्तरीय उत्तर
ओपी टिप्पणी को संबोधित करने के लिए अपडेट करें:
मैं जो चाहता हूं वह नाम स्थान की विशेषता के लिए है
www.windward.net
, लेकिन कोई उपसर्ग नहीं है। मैं वह कैसे कर सकता हूं?
विशेषताओं पर लागू होने के लिए डिफ़ॉल्ट नेमस्पेस चाहने की मात्रा, जो XML नामस्थान अनुशंसा के विपरीत है :
डिफ़ॉल्ट नाम स्थान घोषणाएं सीधे विशेषता नामों पर लागू नहीं होती हैं; उपसर्ग विशेषताओं की व्याख्या उस तत्व से निर्धारित होती है जिस पर वे दिखाई देते हैं।
यदि आप चाहते हैं कि वे विशेषताएँ एक नाम स्थान में हों, तो उन्हें रखने के लिए किसी नामस्थान उपसर्ग के एपीआई के उपयोग को स्वीकार करें।
यह सभी देखें
- XML नाम और तत्व डिफ़ॉल्ट नामस्थान में हैं?
- XML नामस्थान और विशेषताएँ