c# - XElement से नामस्थान और स्कीमा के साथ एक्सएमएल बनाना




schema namespaces (2)

इस आलेख से , ऐसा लगता है कि आप नए XNamespace से अधिक नए हैं, जड़ में एक विशेषता जोड़ें, और फिर दोनों XNamespaces के साथ शहर में जाएं

// The http://www.adventure-works.com namespace is forced to be the default namespace.
XNamespace aw = "http://www.adventure-works.com";
XNamespace fc = "www.fourthcoffee.com";
XElement root = new XElement(aw + "Root",
    new XAttribute("xmlns", "http://www.adventure-works.com"),
///////////  I say, check out this line.
    new XAttribute(XNamespace.Xmlns + "fc", "www.fourthcoffee.com"),
///////////
    new XElement(fc + "Child",
        new XElement(aw + "DifferentChild", "other content")
    ),
    new XElement(aw + "Child2", "c2 content"),
    new XElement(fc + "Child3", "c3 content")
);
Console.WriteLine(root);

यह एक फोरम पोस्ट है जिसमें दिखाया गया है कि योजनाबद्ध कैसे करना है

एक लंबे समय तक सवाल - कृपया मेरे साथ खड़े हो जाओ!

मैं प्रोग्रामेटिक नामों और स्कीमा के साथ एक XML दस्तावेज़ बनाना चाहता हूं। कुछ इस तरह

<myroot 
    xmlns="http://www.someurl.com/ns/myroot" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.someurl.com/ns/myroot http://www.someurl.com/xml/schemas/myschema.xsd">

    <sometag>somecontent</sometag>

</myroot>

मैं बहुत बढ़िया नई LINQ सामान (जो मेरे लिए नया है) का उपयोग कर रहा हूं, और एक XElement का उपयोग करते हुए ऊपर की ओर करने की उम्मीद कर रहा था।

मेरे ऑब्जेक्ट पर एक टूएक्सएलिमेंट () विधि है:

  public XElement ToXElement()
  {
     XNamespace xnsp = "http://www.someurl.com/ns/myroot";

     XElement xe = new XElement(
        xnsp + "myroot",
           new XElement(xnsp + "sometag", "somecontent")
        );

     return xe;
  }

जो मुझे सही ढंग से नाम स्थान देता है, इस प्रकार:

<myroot xmlns="http://www.someurl.com/ns/myroot">
   <sometag>somecontent</sometag>
</myroot>

मेरा प्रश्न: मैं स्कीमा xmlns कैसे जोड़ सकता हूँ: xsi और xsi: schema स्थान विशेषताएँ?

(BTW मैं साधारण एक्सएटीटीय्यूट्स का उपयोग नहीं कर सकता क्योंकि मुझे बृहदान्त्र के उपयोग के लिए कोई त्रुटि मिलती है ":" एट्रिब्यूट नाम में ...)

या मुझे एक XDocument या कुछ अन्य LINQ वर्ग का उपयोग करने की आवश्यकता है?

धन्यवाद...


डेविड बी के लिए धन्यवाद - मुझे पूरा यकीन नहीं है कि मैं ये सब समझता हूं लेकिन यह कोड मुझे चाहिए जो मुझे चाहिए ...

  public XElement ToXElement()
  {
     const string ns = "http://www.someurl.com/ns/myroot";
     const string w3 = "http://wwww.w3.org/2001/XMLSchema-instance";
     const string schema_location = "http://www.someurl.com/ns/myroot http://www.someurl.com/xml/schemas/myschema.xsd";

     XNamespace xnsp = ns;
     XNamespace w3nsp = w3;

     XElement xe = new XElement(xnsp + "myroot",
           new XAttribute(XNamespace.Xmlns + "xsi", w3),
           new XAttribute(w3nsp + "schemaLocation", schema_location),
           new XElement(xnsp + "sometag", "somecontent")
        );

     return xe;
  }

ऐसा प्रतीत होता है कि एक नेमस्पेस प्लस के साथ एक स्ट्रिंग उदा

w3nsp + "schemaLocation"
एक विशेषता को फोन करता है
xsi:schemaLocation
परिणामस्वरूप XML में, जो कि मुझे क्या चाहिए।







xelement