1 /// <summary> 2 /// 移除Xml文本中的命名空间和前缀 3 /// </summary> 4 /// <param name="xmlText">源xml文本</param> 5 /// <returns>移除名称空间和前缀后的xml文本</returns> 6 public static string RemovePrefixAndNamespace(string xmlText) 7 { 8 if (string.IsNullOrEmpty(xmlText)) 9 { 10 return xmlText; 11 } 12 13 Regex regex = new Regex("( xmlns(:(?<prefix>[^=]*))*=)\"[^\"]*\"", RegexOptions.IgnoreCase | RegexOptions.Multiline); 14 MatchCollection collection = regex.Matches(xmlText); 15 if (collection.Count <= 0) 16 { 17 return xmlText; 18 } 19 20 List<string> prefixes=new List<string>(); 21 foreach (Match match in collection) 22 { 23 string temp = match.Groups["prefix"].Value; 24 if (!string.IsNullOrEmpty(temp) && !prefixes.Contains(temp)) 25 { 26 prefixes.Add(temp); 27 } 28 } 29 30 StringBuilder rePattern = new StringBuilder("( xmlns(:[^=]*)*=\"[^\"]*\")"); 31 foreach (string prefix in prefixes) 32 { 33 rePattern.Append(string.Format("|({0}:)", prefix)); 34 } 35 Regex reReplace = new Regex(rePattern.ToString(), RegexOptions.IgnoreCase | RegexOptions.Multiline); 36 xmlText=reReplace.Replace(xmlText, ""); 37 38 return xmlText; 39 }
带命名空间匹配比较麻烦,如不需求,移除XSLT 命名空间
时间: 2024-10-09 23:37:49