1

そのようなxmlを生成する必要があります:

<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ですか?

4

1 に答える 1

4

名前空間属性は 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"))));
于 2013-10-31T23:01:49.120 に答える