簡體   English   中英

如何在C#中刪除不必要的xmlns屬性?

[英]How to remove unnecessary xmlns attribute in C#?

我試圖更新現有的XML文件,但是總是在更新時添加新標簽,而xmlns =“”屬性卻神秘地出現在所有標簽中,而我卻找不到刪除它的方法。

    private static void EditarXML(string path, List<SiteUrl> listaUrls, bool indice, string loc)
    {
        XmlDocument documentoXML = new XmlDocument();
        documentoXML.Load(path);

            XmlNode sitemap = documentoXML.CreateElement("sitemap");

            XmlNode xloc = documentoXML.CreateElement("loc");
            xloc.InnerText = loc;
            sitemap.AppendChild(xloc);

            XmlNode lastmod = documentoXML.CreateElement("lastmod");
            lastmod.InnerText = DateTime.Now.ToShortDateString();
            sitemap.AppendChild(lastmod);

            documentoXML.DocumentElement.AppendChild(sitemap);
    }

任何幫助或想法,將不勝感激。

對於要追加到其上的父節點具有名稱空間的情況,會發生這種情況,但是您沒有在CreateElement()調用中指定它。

為了解決這個問題,您可以像這樣從DocumentElement獲取名稱空間(我的示例只是在內存中創建文檔,但是原理是相同的),然后將其傳遞給CreateElement()

  if (x.DocumentElement != null) {
    var xmlns = (x.DocumentElement.NamespaceURI);
    var sitemap = x.CreateElement("sitemap", xmlns);

    var xloc = x.CreateElement("loc", xmlns);
    xloc.InnerText = "Hello";
    sitemap.AppendChild(xloc);

    var lastmod = x.CreateElement("lastmod", xmlns);
    lastmod.InnerText = DateTime.Now.ToShortDateString();
    sitemap.AppendChild(lastmod);

    x.DocumentElement.AppendChild(sitemap);
  }
  Console.WriteLine(x.InnerXml);

輸出量

<test xmlns="jdphenix"><sitemap><loc>Hello</loc><lastmod>4/20/2015</lastmod></sitemap></test>

請注意,如果未將父名稱空間傳遞給每個CreateElement()調用,則該調用的子級將具有空白xmlns

  // incorrect - appends xmlns=""
  if (x.DocumentElement != null) {
    var sitemap = x.CreateElement("sitemap");

    var xloc = x.CreateElement("loc");
    xloc.InnerText = "Hello";
    sitemap.AppendChild(xloc);

    var lastmod = x.CreateElement("lastmod"); 
    lastmod.InnerText = DateTime.Now.ToShortDateString();
    sitemap.AppendChild(lastmod);

    x.DocumentElement.AppendChild(sitemap);
  }
  Console.WriteLine(x.InnerXml);

輸出量

<test xmlns="jdphenix"><sitemap xmlns=""><loc>Hello</loc><lastmod>4/20/2015</lastmod></sitemap></test>

相關閱讀: 為什么.NET XML為什么將xlmns屬性附加到我添加到文檔中的XmlElements? 我可以阻止它嗎?

如何防止從.NET的XmlDocument輸出的空白xmlns屬性?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM