2010-06-09 11 views
5

I trzeba tak generowania XML jak poniżej:Dodaj nazw i bez nazwisk do Xelement

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <url> 
     <loc>http://www.xyz.eu/</loc> 
     <lastmod>2010-01-20T10:56:47Z</lastmod> 
     <changefreq>daily</changefreq> 
     <priority>1</priority> 
    </url> 
    <url> 
     <loc>http://www.xyz.eu/2/</loc> 
     <lastmod>2009-10-13T10:20:03Z</lastmod> 
     <changefreq>daily</changefreq> 
     <priority>0.5</priority> 
    </url> 
    <url> 
     <loc>http://www.xyz.eu/3/</loc> 
     <lastmod>2009-10-13T10:19:09Z</lastmod> 
     <changefreq>daily</changefreq> 
     <priority>0.5</priority> 
    </url> 
</urlset> 

nie może wydaje się dowiedzieć się, jak dodać nazw bez nazwy pominięciem „xmlns =«»” we wszystkich tagach url.

mój kod:

XNamespace blank = XNamespace.Get(@"http://www.sitemaps.org/schemas/sitemap/0.9"); 
XNamespace xsi = XNamespace.Get(@"http://www.w3.org/2001/XMLSchema-instance"); 

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"), 
    new XElement(blank + "urlset", 
     //new XAttribute(XNamespace.Xmlns +"", blank), 
     new XAttribute(XNamespace.Xmlns + "xsi", xsi), 
     // This private method loops through the dictionary and creates all the page nodes 

     GetSiteMapChildren(pageIdVersionDic, site.Url)    
    )); 

Jakieś pomysły? Dzięki

Odpowiedz

11

Musisz zadeklarować "pustą" przestrzeń nazw jako domyślną przestrzeń nazw. Na przykład działa to dobrze:

 XNamespace blank = XNamespace.Get(@"http://www.sitemaps.org/schemas/sitemap/0.9"); 
     XNamespace xsi = XNamespace.Get(@"http://www.w3.org/2001/XMLSchema-instance"); 

     XDocument doc = new XDocument(
      new XDeclaration("1.0", "utf-8", "yes"), 
      new XElement(blank + "urlset", 
       new XAttribute("xmlns", blank.NamespaceName), 
       new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName), 

       new XElement(blank + "url", 
        new XElement(blank + "loc", "http://www.xyz.eu/"), 
        new XElement(blank + "lastmod", "2010-01-20T10:56:47Z"), 
        new XElement(blank + "changefreq", "daily"), 
        new XElement(blank + "priority", "1")) 
      )); 

     Console.WriteLine(doc.ToString()); 
+0

W jaki sposób przechodzisz? – Mithil

+0

Niestety - nie rozumiem, co masz na myśli ... –

+0

Twój przykład dodaje tylko jeden ...... Jak dodać wiele? – Mithil

Powiązane problemy