0

生成に問題がある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.xmlurl 要素にはxmlns=""属性が含まれています。

<urlset xmlns="..." ><url xmlns=""/> </urlset>

すべての<url>要素にそのxmlns = ""属性が含まれます。

どうすればこれを解決できますか?

4

2 に答える 2

0

W3 組織は私よりも名前空間をうまく要約できると思います。「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( );
}
于 2013-01-24T15:40:19.327 に答える
-1

このコードを試してください

XmlDocument stripDocumentNamespace(XmlDocument oldDom)
{
    XmlDocument newDom = new XmlDocument();
    newDom.LoadXml(Regex.Replace(oldDom.OuterXml,
         @"(xmlns:?[^=]*=[""][^""]*[""])", "",
         RegexOptions.IgnoreCase | RegexOptions.Multiline));
    return newDom;
} 
于 2012-12-04T07:51:20.247 に答える