首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sitemap图像元素

Sitemap图像元素
EN

Stack Overflow用户
提问于 2017-01-17 05:24:31
回答 2查看 541关注 0票数 1

我有一个在c#中构建xml的类,我在mvc控制器中使用它来生成sitemap:

代码语言:javascript
复制
public class Location
    {
        public enum eChangeFrequency
        {
            always,
            hourly,
            daily,
            weekly,
            monthly,
            yearly,
            never
        }

        [XmlElement("loc")]
        public string Url { get; set; }

        [XmlElement("changefreq")]
        public eChangeFrequency? ChangeFrequency { get; set; }
        public bool ShouldSerializeChangeFrequency() { return ChangeFrequency.HasValue; }

        [XmlElement("lastmod")]
        public DateTime? LastModified { get; set; }
        public bool ShouldSerializeLastModified() { return LastModified.HasValue; }

        [XmlElement("priority")]
        public double? Priority { get; set; }
        public bool ShouldSerializePriority() { return Priority.HasValue; }

        [XmlElement("image")]
        public Image Image { get; set; }
    }

    [XmlType("image")]
    public class Image
    {
        [XmlElement(ElementName = "loc")]
        public string UrlLocation { get; set; }

        [XmlElement(ElementName = "caption")]
        public string Caption { get; set; }

        [XmlElement(ElementName = "title")]
        public string Title { get; set; }

    }

这是输出,当我使用它时:

代码语言:javascript
复制
<url>
  <loc>http://...</loc>
  <priority>0.5</priority>
    <image>
      <loc>http://...</loc>
    </image>
</url>

但我想要正确的格式,像这样:

代码语言:javascript
复制
<url>
  <loc>http://...</loc>
  <priority>0.5</priority>
  <image:image>
    <image:loc>http://...</image:loc>
  </image:image>
</url>

我想在图像元素中添加这个前缀,谢谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-17 08:54:59

阅读本页https://msdn.microsoft.com/tr-tr/library/system.xml.serialization.xmlnamespacedeclarationsattribute(v=vs.110).aspx

有个很好的例子。

应该在图像类中添加XmlSerializerNamespaces类型属性,并添加字符串前缀和字符串命名空间值。

我读过这个XML Serialization and namespace prefixes

代码语言:javascript
复制
[XmlType("image", Namespace = "http://flibble")]
public class Image
{
    [XmlElement(ElementName = "loc")]
    public string UrlLocation { get; set; }

    [XmlElement(ElementName = "caption")]        
    public string Caption { get; set; }

    [XmlElement(ElementName = "title")]
    public string Title { get; set; }

}  

用法必须如下所示。

代码语言:javascript
复制
Image mySelect = new Image();
        mySelect.Caption = "Caption";
        mySelect.Title = "Title";
        mySelect.UrlLocation = "www";

        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("image", "http://flibble");
        XmlSerializer ser = new XmlSerializer(typeof(Image));

        ser.Serialize(Console.Out, mySelect,ns);
票数 0
EN

Stack Overflow用户

发布于 2017-01-18 07:18:21

我是这样加的:

代码语言:javascript
复制
[XmlType("image")]
    public class Image
    {
        [XmlElement(ElementName = "loc")]
        public string UrlLocation { get; set; }

        [XmlElement(ElementName = "caption")]
        public string Caption { get; set; }

        [XmlElement(ElementName = "title")]
        public string Title { get; set; }

        [XmlNamespaceDeclarations]
        public XmlSerializerNamespaces NameSpace
        {
            get
            {
                XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                ns.Add("image", "http://www.google.com/schemas/sitemap-image/1.1");
                return ns;
            }
            set { NameSpace = value; }
        }

    }

这是输出:

代码语言:javascript
复制
<url>
  <loc>http://...</loc>
  <priority>0.5</priority>
    <image xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
      <loc>http://...</loc>
    </image>
</url>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41689578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档