站点地图图像元素
Sitemap image element
我有一个 class 用于在 c# 中构建 xml 站点地图,我在 mvc 控制器中使用它来生成站点地图:
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; }
}
这是输出,当我使用它时:
<url>
<loc>http://...</loc>
<priority>0.5</priority>
<image>
<loc>http://...</loc>
</image>
</url>
但我想要正确的格式,像这样:
<url>
<loc>http://...</loc>
<priority>0.5</priority>
<image:image>
<image:loc>http://...</image:loc>
</image:image>
</url>
我想将这个前缀添加到图像元素中,
感谢您的帮助
阅读此页https://msdn.microsoft.com/tr-tr/library/system.xml.serialization.xmlnamespacedeclarationsattribute(v=vs.110).aspx
有很好的例子。
您应该在图像 class 中添加 XmlSerializerNamespaces 类型 属性 并且您应该添加字符串前缀和字符串命名空间值。
我读了这个XML Serialization and namespace prefixes。
[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; }
}
用法必须如下所示。
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);
我是这样添加的:
[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; }
}
}
这是输出:
<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>
我有一个 class 用于在 c# 中构建 xml 站点地图,我在 mvc 控制器中使用它来生成站点地图:
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; }
}
这是输出,当我使用它时:
<url>
<loc>http://...</loc>
<priority>0.5</priority>
<image>
<loc>http://...</loc>
</image>
</url>
但我想要正确的格式,像这样:
<url>
<loc>http://...</loc>
<priority>0.5</priority>
<image:image>
<image:loc>http://...</image:loc>
</image:image>
</url>
我想将这个前缀添加到图像元素中, 感谢您的帮助
阅读此页https://msdn.microsoft.com/tr-tr/library/system.xml.serialization.xmlnamespacedeclarationsattribute(v=vs.110).aspx
有很好的例子。
您应该在图像 class 中添加 XmlSerializerNamespaces 类型 属性 并且您应该添加字符串前缀和字符串命名空间值。
我读了这个XML Serialization and namespace prefixes。
[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; }
}
用法必须如下所示。
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);
我是这样添加的:
[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; }
}
}
这是输出:
<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>