C# 使用LINQ到XML的名称中的视频站点地图冒号

C# 使用LINQ到XML的名称中的视频站点地图冒号,c#,xml,linq,sitemap,hex,C#,Xml,Linq,Sitemap,Hex,我正在尝试为视频网站制作视频网站地图。但我面临一个XmlExection“The':”字符,十六进制值0x3A,不能包含在名称中。”这是因为名称中有冒号(video:video) XNamespace gs = "http://www.sitemaps.org/schemas/sitemap/0.9"; XDocument doc = new XDocument( new XElement(gs + "urlset",

我正在尝试为视频网站制作视频网站地图。但我面临一个XmlExection“The':”字符,十六进制值0x3A,不能包含在名称中。”这是因为名称中有冒号(video:video)

XNamespace gs = "http://www.sitemaps.org/schemas/sitemap/0.9";
                XDocument doc = new XDocument(
                    new XElement(gs + "urlset",
                        (from p in db.Videos
                         orderby p.video_id descending
                         select new XElement(gs + "url",
                             new XElement(gs + "loc", "http://www.example.com/video/" + p.video_id + "-" + p.video_query),
                             new XElement(gs + "video:video",
                             new XElement(gs + "video:thumbnail_loc", "http://cdn.example.com/thumb/" + p.video_image)                           
                                 ))).Take(50)));
     doc.Save(@"C:\video_sitemap.xml");
请告诉我如何在名称中添加冒号,以便使用LINQ to SQL生成动态xml站点地图

谢谢和问候

更新:

此视频XML网站地图在页面上的外观应如下所示:

您似乎混淆了别名和名称空间

找出“视频”的名称空间。为它创建一个
XNamespace
(就像在gs中那样)


然后执行
videoNamespace+“缩略图”

您似乎将别名与名称空间混淆了

找出“视频”的名称空间。为它创建一个
XNamespace
(就像在gs中那样)


然后执行
videoNamespace+“缩略图”

您似乎将别名与名称空间混淆了

找出“视频”的名称空间。为它创建一个
XNamespace
(就像在gs中那样)


然后执行
videoNamespace+“缩略图”

您似乎将别名与名称空间混淆了

找出“视频”的名称空间。为它创建一个
XNamespace
(就像在gs中那样)


然后执行
videoNamespace+“缩略图锁定”
video
这是名称空间的别名。根据示例:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> 
   <url> 
     <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
     <video:video>
       ...
     </video:video>
   </url>
</urlset>
编辑:如果确实希望此名称空间使用别名
video
,可以在根元素中声明它:

XDocument doc = new XDocument(
    new XElement(siteMapNs + "urlset",
        new XAttribute(XNamespace.Xmlns + "video", videoNs),
        (from p in db.Videos
        ...

video
这是名称空间的别名。根据示例:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> 
   <url> 
     <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
     <video:video>
       ...
     </video:video>
   </url>
</urlset>
编辑:如果确实希望此名称空间使用别名
video
,可以在根元素中声明它:

XDocument doc = new XDocument(
    new XElement(siteMapNs + "urlset",
        new XAttribute(XNamespace.Xmlns + "video", videoNs),
        (from p in db.Videos
        ...

video
这是名称空间的别名。根据示例:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> 
   <url> 
     <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
     <video:video>
       ...
     </video:video>
   </url>
</urlset>
编辑:如果确实希望此名称空间使用别名
video
,可以在根元素中声明它:

XDocument doc = new XDocument(
    new XElement(siteMapNs + "urlset",
        new XAttribute(XNamespace.Xmlns + "video", videoNs),
        (from p in db.Videos
        ...

video
这是名称空间的别名。根据示例:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> 
   <url> 
     <loc>http://www.example.com/videos/some_video_landing_page.html</loc>
     <video:video>
       ...
     </video:video>
   </url>
</urlset>
编辑:如果确实希望此名称空间使用别名
video
,可以在根元素中声明它:

XDocument doc = new XDocument(
    new XElement(siteMapNs + "urlset",
        new XAttribute(XNamespace.Xmlns + "video", videoNs),
        (from p in db.Videos
        ...
@乔恩·斯凯特: 您的代码生成了此站点地图

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/video/1-video_query_1</loc>
    <video xmlns="http://www.google.com/schemas/sitemap-video/1.1">
      <thumbnail_loc>http://cdn.example.com/thumb/7665518872558731.jpg</thumbnail_loc>
    </video>
  </url>
  <url>
    <loc>http://www.example.com/video/2-video_query_2</loc>
    <video xmlns="http://www.google.com/schemas/sitemap-video/1.1">
      <thumbnail_loc>http://cdn.jigers.com/thumb/6921835997871337.jpg</thumbnail_loc>
    </video>
  </url>

http://www.example.com/video/1-video_query_1
http://cdn.example.com/thumb/7665518872558731.jpg
http://www.example.com/video/2-video_query_2
http://cdn.jigers.com/thumb/6921835997871337.jpg

但应该是这样的:

    <?xml version="1.0" encoding="utf-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
      <url>
        <loc>http://www.example.com/video/1-video_query_1</loc>
        <video:video>
          <video:thumbnail_loc>http://cdn.example.com/thumb/7665518872558731.jpg</video:thumbnail_loc>
        </video:video>
      </url>
      <url>
        <loc>http://www.example.com/video/2-video_query_2</loc>
        <video:video>
          <video:thumbnail_loc>http://cdn.jigers.com/thumb/6921835997871337.jpg</video:thumbnail_loc>
        </video:video>
      </url>
</urlset>

http://www.example.com/video/1-video_query_1
http://cdn.example.com/thumb/7665518872558731.jpg
http://www.example.com/video/2-video_query_2
http://cdn.jigers.com/thumb/6921835997871337.jpg
视频:视频有冒号,应该有
xmlns:video=”http://www.google.com/schemas/sitemap-video/1.1
URL集中的命名空间

请看一看

@Jon Skeet: 您的代码生成了此站点地图

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/video/1-video_query_1</loc>
    <video xmlns="http://www.google.com/schemas/sitemap-video/1.1">
      <thumbnail_loc>http://cdn.example.com/thumb/7665518872558731.jpg</thumbnail_loc>
    </video>
  </url>
  <url>
    <loc>http://www.example.com/video/2-video_query_2</loc>
    <video xmlns="http://www.google.com/schemas/sitemap-video/1.1">
      <thumbnail_loc>http://cdn.jigers.com/thumb/6921835997871337.jpg</thumbnail_loc>
    </video>
  </url>

http://www.example.com/video/1-video_query_1
http://cdn.example.com/thumb/7665518872558731.jpg
http://www.example.com/video/2-video_query_2
http://cdn.jigers.com/thumb/6921835997871337.jpg

但应该是这样的:

    <?xml version="1.0" encoding="utf-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
      <url>
        <loc>http://www.example.com/video/1-video_query_1</loc>
        <video:video>
          <video:thumbnail_loc>http://cdn.example.com/thumb/7665518872558731.jpg</video:thumbnail_loc>
        </video:video>
      </url>
      <url>
        <loc>http://www.example.com/video/2-video_query_2</loc>
        <video:video>
          <video:thumbnail_loc>http://cdn.jigers.com/thumb/6921835997871337.jpg</video:thumbnail_loc>
        </video:video>
      </url>
</urlset>

http://www.example.com/video/1-video_query_1
http://cdn.example.com/thumb/7665518872558731.jpg
http://www.example.com/video/2-video_query_2
http://cdn.jigers.com/thumb/6921835997871337.jpg
视频:视频有冒号,应该有
xmlns:video=”http://www.google.com/schemas/sitemap-video/1.1
URL集中的命名空间

请看一看

@Jon Skeet: 您的代码生成了此站点地图

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/video/1-video_query_1</loc>
    <video xmlns="http://www.google.com/schemas/sitemap-video/1.1">
      <thumbnail_loc>http://cdn.example.com/thumb/7665518872558731.jpg</thumbnail_loc>
    </video>
  </url>
  <url>
    <loc>http://www.example.com/video/2-video_query_2</loc>
    <video xmlns="http://www.google.com/schemas/sitemap-video/1.1">
      <thumbnail_loc>http://cdn.jigers.com/thumb/6921835997871337.jpg</thumbnail_loc>
    </video>
  </url>

http://www.example.com/video/1-video_query_1
http://cdn.example.com/thumb/7665518872558731.jpg
http://www.example.com/video/2-video_query_2
http://cdn.jigers.com/thumb/6921835997871337.jpg

但应该是这样的:

    <?xml version="1.0" encoding="utf-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
      <url>
        <loc>http://www.example.com/video/1-video_query_1</loc>
        <video:video>
          <video:thumbnail_loc>http://cdn.example.com/thumb/7665518872558731.jpg</video:thumbnail_loc>
        </video:video>
      </url>
      <url>
        <loc>http://www.example.com/video/2-video_query_2</loc>
        <video:video>
          <video:thumbnail_loc>http://cdn.jigers.com/thumb/6921835997871337.jpg</video:thumbnail_loc>
        </video:video>
      </url>
</urlset>

http://www.example.com/video/1-video_query_1
http://cdn.example.com/thumb/7665518872558731.jpg
http://www.example.com/video/2-video_query_2
http://cdn.jigers.com/thumb/6921835997871337.jpg
视频:视频有冒号,应该有
xmlns:video=”http://www.google.com/schemas/sitemap-video/1.1
URL集中的命名空间

请看一看

@Jon Skeet: 您的代码生成了此站点地图

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/video/1-video_query_1</loc>
    <video xmlns="http://www.google.com/schemas/sitemap-video/1.1">
      <thumbnail_loc>http://cdn.example.com/thumb/7665518872558731.jpg</thumbnail_loc>
    </video>
  </url>
  <url>
    <loc>http://www.example.com/video/2-video_query_2</loc>
    <video xmlns="http://www.google.com/schemas/sitemap-video/1.1">
      <thumbnail_loc>http://cdn.jigers.com/thumb/6921835997871337.jpg</thumbnail_loc>
    </video>
  </url>

http://www.example.com/video/1-video_query_1
http://cdn.example.com/thumb/7665518872558731.jpg
http://www.example.com/video/2-video_query_2
http://cdn.jigers.com/thumb/6921835997871337.jpg

但应该是这样的:

    <?xml version="1.0" encoding="utf-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
      <url>
        <loc>http://www.example.com/video/1-video_query_1</loc>
        <video:video>
          <video:thumbnail_loc>http://cdn.example.com/thumb/7665518872558731.jpg</video:thumbnail_loc>
        </video:video>
      </url>
      <url>
        <loc>http://www.example.com/video/2-video_query_2</loc>
        <video:video>
          <video:thumbnail_loc>http://cdn.jigers.com/thumb/6921835997871337.jpg</video:thumbnail_loc>
        </video:video>
      </url>
</urlset>

http://www.example.com/video/1-video_query_1
http://cdn.example.com/thumb/7665518872558731.jpg
http://www.example.com/video/2-video_query_2
http://cdn.jigers.com/thumb/6921835997871337.jpg
视频:视频有冒号,应该有
xmlns:video=”http://www.google.com/schemas/sitemap-video/1.1
URL集中的命名空间


请看一看

听起来您实际上想要一个不同的名称空间,但很难说清楚,因为我们不知道以后XML应该是什么样子。(另外,请格式化你的源代码。我肯定你还没有把它格式化成那样…@JonSkeet:事实上,我现在只是在本地主机上测试制作视频站点地图,所以代码与此相同,只是我改成了web