簡體   English   中英

通過XML的Attribute或Regex刪除名稱空間字符串

[英]Remove namespace string via Attribute or Regex from XML

我已經創建了一個XML文件,但是重復的節點之一正在添加一個命名空間引用(xmlns:kk =“ kk”),但我似乎無法將其刪除。 僅添加到第一個元素/節點。 當我手動刪除它時,XML文件將針對XSD進行驗證。

我嘗試在創建xml屬性時以及使用Regex之后刪除它。

創建XML

XmlDocument doc
 =doc.Load(System.Configuration.ConfigurationManager.AppSettings["doctemploc"]);
    XmlElement Blaett = doc.CreateElement("kk:Blaett","kk");
    XmlAttribute numbber = doc.CreateAttribute("number");
    Blaett.Attributes.Append(numbber);

試過

XmlElement Blaett = doc.CreateElement("Blaett");

nummer.RemoveAttribute("xmlns:kk");
nummer.Attributes().Where(a => a.IsNamespaceDeclaration).Remove()
nummer.Attributes("xmlns").Remove();

在創建XML文件之后

public static class XMLExtensions
{
    public static void RemoveNamespace(this XmlDocument document, string 
@namespace) =>
        document.InnerXml = Regex.Replace(
            document.InnerXml,
            $@"((?<=\</|\<){@namespace}:|xmlns:{@namespace}=""[^""]+"")", 
            "");
}

這將刪除幾乎所有需要刪除xmlns:kk =“ kk”的KK參考。

經過幾天的痛苦,我將URL而不是KK添加到名稱空間

  namespace1 = "http://xmls.site.se/section/3.1";
  XmlElement Blaett = doc.CreateElement("kk:Blaett"," namespace1);

我確實必須將其添加到每個XmlElement中,但是它消除了問題,實際上消除了xmlns:kk =“ kk”。

已針對XSD進行驗證...快樂的日子

暫無
暫無

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

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