我遇到有关生成sitemap.xml
我的创建者代码是这样的:
XNamespace xmlns = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9");
XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
XNamespace schemaLocation = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd");
XElement urlset = new XElement(xmlns+"urlset",
new XAttribute(XNamespace.Xmlns + "xsi", xsi),
new XAttribute(xsi + "schemaLocation", schemaLocation));
urlset.Add(new XElement("url"));
此代码生成xml文件,但生成的sitemap.xml
网址元素包含xmlns=""
属性。
<urlset xmlns="..." ><url xmlns=""/> </urlset>
所有<url>
元素都包含xmlns = ""
属性。
我该如何解决这个问题?
答案 0 :(得分:0)
我认为W3 Org可以比我更好地命名空间,你有'url'节点上所有节点和属性的限定命名空间。当你添加urlset.Add(new XElement("url"));
时,它应该如何确定它所在的命名空间?
我建议尝试一下,看看它对你有用:
static void Main ( string [] args )
{
XNamespace xmlns = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9");
XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
XNamespace schemaLocation = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd");
XElement urlset = new XElement(xmlns+"urlset",
new XAttribute(XNamespace.Xmlns + "xsi", xsi),
new XAttribute(xsi + "schemaLocation", schemaLocation));
urlset.Add(new XElement(xmlns+"url")); // NB> We are qualifying the node
var s = urlset.ToString( );
Console.ReadKey( );
}
答案 1 :(得分:-1)
试试此代码
XmlDocument stripDocumentNamespace(XmlDocument oldDom)
{
XmlDocument newDom = new XmlDocument();
newDom.LoadXml(Regex.Replace(oldDom.OuterXml,
@"(xmlns:?[^=]*=[""][^""]*[""])", "",
RegexOptions.IgnoreCase | RegexOptions.Multiline));
return newDom;
}