2010-07-27 12 views
6

मैं एक गतिशील sitemap.xmlxsi कैसे उत्पन्न करें: LINQ से XML के साथ एक गतिशील sitemap.xml उत्पन्न करते समय schemalocation विशेषता सही ढंग से?

sitemaps.org इस के अनुसार पैदा कर रहा हूँ एक sitemap.xml

<?xml version='1.0' encoding='UTF-8'?> 
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" 
    xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
    ... 
    </url> 
</urlset> 

तो मैं LINQ का उपयोग कर रहा एक्सएमएल के लिए sitemap.xml

उत्पन्न करने के लिए के लिए शीर्षक है
XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9"; 
return new XElement(ns + "urlset", 
    new XAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"), 
    new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), 
    //new XAttribute("xsi:schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"), 
    from node in new GetNodes() 
    select new XElement(ns + "url", 
     new XElement(ns + "loc", node.Loc), 
     new XElement(ns + "lastmod", node.LastMod), 
     new XElement(ns + "priority", node.Priority) 
    ) 
).ToString(); 

टिप्पणी की गई पंक्ति वह है जिसे मैं सही नहीं कर सकता।
मैं "xsi: schemalocation" विशेषता कैसे सेट कर सकता हूं?

धन्यवाद।

उत्तर

4

ठीक है, मुझे यह सही मिला। धन्यवाद करने के लिए माइक कैरोन
अगर मैं XAtrribute (XNamespace.Xmlns + 'xsi ", ...) की घोषणा तो यह

XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9"; 
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance"; 
return new XElement(ns + "urlset", 
    new XAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"), 
    new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), 
    new XAttribute(xsi + "schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"), 
    from node in GetNodes() 
    select new XElement(ns + "url", 
     new XElement(ns + "loc", node.Loc), 
     new XElement(ns + "lastmod", node.LastMod), 
     new XElement(ns + "priority", node.Priority) 
    ) 
).ToString(); 
+0

निष्पक्ष होने के लिए, इससे कोई फर्क नहीं पड़ता कि वास्तविक नामस्थान पहचान क्या है। यह सभी मामलों के लिए "carlosmunoz" हो सकता है :) –

+0

कूल, तो मैं "carlosmunoz" –

+0

हे कार्लोस का उपयोग करूंगा, 'GetNodes' विधि क्या लौटाती है? अग्रिम में धन्यवाद। – Ethan

3

मैं एक्सएमएल के लिए LINQ पता नहीं है, लेकिन प्रलेखन इसकी एक झलक लेने के बाद, इस प्रयास करें:

XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9"; 
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance"; 
return new XElement(ns + "urlset", 
    new XAttribute(xsi + "schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"), 
    from node in new GetNodes() 
    select new XElement(ns + "url", 
     new XElement(ns + "loc", node.Loc), 
     new XElement(ns + "lastmod", node.LastMod), 
     new XElement(ns + "priority", node.Priority) 
    ) 
).ToString(); 

ध्यान दें कि मैं xmlns की स्थापना नहीं कर रहा हूँ स्पष्ट रूप से जिम्मेदार बताते हैं। मुझे संदेह है कि वे स्वचालित रूप से जेनरेट हो जाते हैं। इसके अलावा, चेतावनी emptor, क्योंकि यह परीक्षण नहीं किया गया है।

+0

यह लगभग काम करता है काम करता है, लेकिन यह उत्पन्न करता है: p1 के बजाय: xsi स्ट्रिंग के बाद से" xsi "कहीं भी सेट नहीं है। –

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

  • कोई संबंधित समस्या नहीं^_^