2013-10-31 43 views
1

我需要生成XML一樣,創造的XElement:如何使用命名空間

<urlset xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
<url> 
    <loc>http://blabla</loc> 
    <video:video> 
    <video:player allow_embed="yes">http://blablabla</video:player_loc>  
    </video:video> 
</url> 

我想不出有命名空間的工作方式。我甚至不能正確地創建urlset元素,我想:

XNamespace _defaultNamespace = "http://www.sitemaps.org/schemas/sitemap/0.9"; 
XNamespace _videoNameSpace = "http://www.google.com/schemas/sitemap-video/1.1"; 

new XElement("urlset",new XAttribute(_defaultNamespace+"video",_defaultNamespace)) 

,它產生:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<urlset p1:video="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:p1="http://www.sitemaps.org/schemas/sitemap/0.9"> 

那是什麼東西p1

+0

告訴我們你已經嘗試過了。 – deathismyfriend

回答

3

命名空間的屬性中的xmlns命名空間,所以你應該使用 XNamespace.Xmlns+ attributeName宣告命名空間:

XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9"; 
XNamespace video = "http://www.google.com/schemas/sitemap-video/1.1"; 
var urlset = new XElement(ns + "urlset",     
    new XAttribute(XNamespace.Xmlns + "video", video)); 

主要生產

<urlset xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" 
     xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" /> 

完整的XML代會看起來像:

var urlset = new XElement(ns + "urlset",     
    new XAttribute(XNamespace.Xmlns + "video", video), 
    new XElement(ns + "url", 
     new XElement(ns + "loc", "http:/blabla"), 
     new XElement(video + "video", 
      new XElement(video + "player", 
       new XAttribute("allow_embed", "yes"), 
       "http:/blabla")))); 
+1

是的......謝謝! – Agzam